- 1 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 12:38:15.61 ID:VlX3xGEw.net]
- Windows NTは初代からUnicodeがネイティブの文字コードです。cp932ではありません。
プログラマーなら一度は煩わされたことのある文字コードについてのスレ。 UTF-8、Shift_JIS、JIS、EUC、Unicode、UCS、サロゲートペア、コードポイント、文字コード判定、 合成文字、ソート、TRON、外字コード、その他について語り合いましょう。 各言語での文字列の扱いについての質問もOKです。 基本マッターリ、ささ、茶でもどうぞ。 ■過去スレ 文字コード総合スレ part1 pc11.2ch.net/test/read.cgi/tech/1031028205/ 文字コード総合スレ part2 pc11.2ch.net/test/read.cgi/tech/1143375639/ 文字コード総合スレ part3 pc11.2ch.net/test/read.cgi/tech/1180250376/ 文字コード総合スレ part4 pc11.2ch.net/test/read.cgi/tech/1228052369/ (スレ再利用)UnicodeとUTF-8の違いは? pc12.2ch.net/test/read.cgi/tech/1177930957/ (隔離スレ)UnicodeとUTF-8の違いは? その2 pc12.2ch.net/test/read.cgi/tech/1274937437/ 文字コード総合スレ part5 pc12.2ch.net/test/read.cgi/tech/1236529563/ 文字コード総合スレ part6 hibari.2ch.net/test/read.cgi/tech/1278923059/ 文字コード総合スレ part7 toro.2ch.net/test/read.cgi/tech/1306595564/ 文字コード総合スレ part8 peace.2ch.net/test/read.cgi/tech/1354248962/ 文字コード総合スレ part9 peace.2ch.net/test/read.cgi/tech/1401301779/ 文字コード総合スレ Part10 mevius.2ch.net/test/read.cgi/tech/1444822140/ 文字コード総合スレ Part11 https://mevius.5ch.net/test/read.cgi/tech/1516629503/
- 2 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 12:40:36.99 ID:VlX3xGEw.net]
- ■参考サイト
Unicode Home Page www.unicode.org/ Java Character Encodings www.ingrid.org/java/i18n/encoding/ euc.JP: tech docs, BeOS tools euc.jp/ IANA: Character Sets www.iana.org/assignments/character-sets Legacy Encoding Project sourceforge.jp/projects/legacy-encoding/ JIS X 4061 日本語文字列照合順番 www.jisc.go.jp/
- 3 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 12:45:08.07 ID:VlX3xGEw.net]
- ■これまでに行われた議論
・Windows 10のコマンドプロンプトでUTF-8を使用する場合chcp 65001で切替可能。日本語入力等も可 ・Shift JIS や EUC-JP や Big5 や GB なんかをUnicode に変換してしまうと、ラウンドトリップは保証されるか ・単一情報をソースの文字コード(or 言語)情報なしに元に戻したい (統計的に文字の出現確率なんかを調べる) ・0x5cをUnicodeにするときにバックスラッシュに置き換えるか円マークに置き換えるかで、逆変換時に結果が変わるの問題 ・丸付き数字は機種依存文字か?。Unicodeでは機種依存文字ではない。 ・Safari文字コード変換のバグは ・Microsoft文字コード変換のバグは ・U+31F0..U+31FF(アイヌ語表記用小書きカタカナ)が入ってない件 ・文字化けに強いishフォーマットでエロ画像を交換する場合、ssより、s7のほうが化けにくい ・SJISとUNICODEの判別はどのようにすればいいですか?BOM。無ければ、統計判断。 ライブラリを使うが吉 ・ところでケータイのUnicode対応度って実際どうよ? → 対応済み ・TwitterのWebインターフェイスからだと、サロゲートペアは2文字としてカウント。140字打てない 。 ・Unicode 5.2で追加されたUnicodeSMP(第1面)、Unicode 5.1で未定義だったSMPのコードポイントや第15、第16面が Windows7では表示されない。 → 和田研細丸ゴシック2004ARIBはARIB外字を含んでいる。 ・元号を安置する場所はJIS第三で確保済み。ウニコードでブロックを確保は政治力次第。 ・元号は個人名ではない。特定の時間軸基準に数える年号を漢字で指す文字。 陛下の崩御後必ずしも元号が追号になるわけではない。むしろ違う場合が多い。昭和54年法律43号の元号法参照。 ・文末でなければ"0"+ASCII7ビット、文末なら"1"+ASCII7ビットというエンコード。 → ヌル1バイトが貴重な時代からの負の遺産。 ・Windows7出荷時に未定義だったコードポイントはフォント入れても豆腐になる。Unicode5.2は表示しない。欝だ。 ・Unicode6ドラフトでPILE_OF_POO文字確定。ウニコードがもはやイミフ。SerifとSans-Serifで幅に違いは出る? ・Unicodeのzipが文字化けする。→Windows 7は公式パッチで対応可能。8以降は標準対応
- 4 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 12:46:00.56 ID:VlX3xGEw.net]
- ・中国語の簡体字では、へんやつくりが簡略化されるなら、その文字も自動的に簡略化して表記する国家規格が有る
・中国語の「噁心」簡化政策によると「恶(U+6076)」に統一。口偏+恶(U+6076)は普通に使われているがUnicodeにはない ・日本人のニーズが満たせないのも確かなので原規格分離(中国では「曾→曽」は簡体字と繁体字の違いとはみなされていないとか) ・UNICODEを扱うプログラムはサロゲートをぶったぎられた入力が渡されてくる場合にも備えろって→YES ・UnicodeとUTF-8の違いは? ・日本のCJK Ext.D Submissionに{魚針}が含まれてる件 U+9C75(魚箴)は強烈。いくら何でも違いすぎる。(魚針) ひょっとしたら後で実は別字だったとか日本では異体字だが中国では別字とかになるかも知れんぞ。 中国ではってレベルじゃねーぞ。 ・Unicodeは言語情報を直接扱わない。 多言語の混在表現は(unicodeでは)できないか ・Unicode文字列リストを各国言語を考慮してソートしたいんですが → ムリです。 ・Unicodeサニタイズが面倒になるのか
- 5 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 12:46:16.07 ID:VlX3xGEw.net]
- もうひとつの過去スレ:
文字コード統一スレ 1文字目 pc8.2ch.net/test/read.cgi/tech/1109171258/ 隔離スレ: UnicodeとUTF-8の違いは? pc12.2ch.net/test/read.cgi/tech/1177930957/ UnicodeとUTF-8の違いは? その2 hibari.2ch.net/test/read.cgi/tech/1274937437/ UnicodeとUTF-8の違いは? その2 toro.2ch.net/test/read.cgi/tech/1291075205/ UnicodeとUTF-8の違い4(インディアン隔離スレ) toro.2ch.net/test/read.cgi/tech/1342963035/
- 6 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 12:48:18.57 ID:VlX3xGEw.net]
- ■ライブラリ
ICU - International Components for Unicode site.icu-project.org/home mlang msdn.microsoft.com/ja-jp/library/aa767865(en-us).aspx iconv www.gnu.org/software/libiconv/ ICU www.icu-project.org/ NKF32.DLL (非推奨) www.vector.co.jp/soft/win95/util/se020949.html
- 7 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 12:49:13.25 ID:VlX3xGEw.net]
- ■単語一覧
・UTF-16は16ビット単位にエンコードするけど、サロゲートペアがある 表現できる文字空間はUTF-8と同じく20ビットとちょっと ・丸付き数字は機種依存文字か?MSIME2007ではCP932に収録されてない文字は「環境依存文字」って表示。 MacJapaneseではフォントによっては表示されないし、フォントによっては表示される。 今のMac(内部Unicodeアプリ)は、フォント依存ではなくアプリ依存。 似非ISO-2022-JPや似非Shift_JISのドキュメント中の丸付き数字は、 素直にAppleのAPIを使ってるアプリならゲタ(U+FFFD)になる。 ・Mail.appではISO-2022-JPに収まらずCP932に収まるメールは、含まれる字種によって charset=CP932で送信される場合とISO-2022-JP(もどき)で送信される場合がある ・MSでのウニコードとSJIS変換のバグ。 U+007E TILDE <-> Shift_JIS 0x7E OVERLINE U+301C WAVE DASH -> Shift_JIS NA 【MSの問題】 U+FF5E FULLWIDTH TILDE <-> Shift_JIS 0x8160 WAVE DASH 【MSの問題】 ・SafariでのウニコードとSJIS変換のバグ。 U+007E TILDE -> Shift_JIS 0x8160 WAVE DASH 【Safariの問題】 U+301C WAVE DASH <-> Shift_JIS 0x8160 WAVE DASH U+FF5E FULLWIDTH TILDE <-> Shift_JIS NA ・winzipの規格ではファイル名のコードページ指定もしくは記録情報が存在しない。 解決策:取り合えず、MSWin+JPではShift-jisでファイル自体には保存されている。 MACOSX=Unicode,Unix=UTF/EUC/S-JISどれでもありえる。文字に関係なくLocalLangで 再変換しているので、それをしなければよい。 ・charlenでの文字列長の判定はプラットフォームにより返り値が違う(機種依存文字等)。マニュアル嫁。 ・JISのエスケープシーケンスが正しく認識されない本文とか。 '0x1b, 0x24, 0x42' という3バイトを先頭に、'0x1b, 0x28, 0x42' を末尾に追加汁。 あるいはmasaka.dw.land.to/mr/jmr.phpとか。
- 8 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 17:19:29.50 ID:0LUE4AGb.net]
- oo|o|o|||o|o|o|o|||ooo|oo|o|ooooo||o||o|oooo|||o||||o|oo|o|||o|o|o|o|o|oo
ooo||o|o|||||||o|o||oo|ooo||ooo|o||oooo|oo|o||oo|||ooo||||oo||ooooo||oo|| oo||ooo|o||o||ooooo|oo|oo|o|o|||o|||||o|o|oo||oo|ooo||o||||o|o||o||o|oooo ooo|||||o|oo|||ooo|o|oo|||||ooooooooooo|||ooo|||o||||oo|oo|||ooo|o||oo||| ooooo|ooo||o|oo|||oooo|oo|||||ooooo||o|||oo|||o|o|o|o||||o|||||oo|oo|oo|o ||o|oo||oooooo||o|oo||o|||ooo||oo||oo||ooo|o|o|oo|||||o|o|o|||oooooo|o||| ||o||||o|oo|||o||oo||ooo|ooo|oo|||oo|o|||o|||oo|oo|oo|o|||||oooo||ooooooo oo|oo|||||oo|||||o|oo|o||oo|||o|ooo||o|oo|||o||ooooooooo|ooooo|o|||o||o|| o|oo|o||o|oo|oo|oo|o|o|o|oo|o||||oo|oo||ooo|ooooo||||o|oo|oo|||o|||oo|||| |o||||o|||oo|o||o||oo||oooo|oo|o||oooo|oo|||||||oo|o|o|ooo|oooo||||ooo|oo ooooo|||oo||oo|o||o|ooooooo||||||o|o||o|o|ooo||oo||o||oooo||oo|oo|||o|||| |o|||oo||o||o|o|||o||oooo|oo|||o||oo|ooooo|o|||o|||oo|ooo|ooo|||oo||oo|oo ||ooo|||ooo|||o|ooooo||||oo|||||oo||ooo|o||o||ooo|oo||oo|oo|||o|o|o|oooo| |||oo|o||o||o|ooooooooo|o|o|||||oo|o||ooo|o||o|oo||||oo|o||o||o|ooo|||ooo oooo|||ooooo||o||oo|ooo|||||o|oo|||o||o||ooo|ooo||oo||oo||o||o|oo|o|oo||| oooooo||||oo|o||oo|||o|ooooo||ooo||||||oooo|||||oo||||ooo|||o|o|o|o||oooo o|o|o|oo|o|oooo|o|ooo||oo|oo||||||||ooo|o||o||oo||o|||ooo|o||oo||oo||oo|o oo||||oooooo|o||o|o|oooo||o|||oo|ooo|o|o|o|ooo||o|o|oo|o|||o|o|o|||o||o|| oo|oooo|oo|o|oo||||oo|||o||o|o||o||o|oooo|o||||o|o||o|ooooo||ooo||||||ooo oo||o|oo||||oo|||||||||ooo|oo|||oo||oooo||o|o|o||||ooooooooo|oo|||oo|oo|o o|o|||||o|o|||oo|oo|o|||o|o|||oo|oo||ooo|oo|oo||oooo||||o||||ooooooo||ooo o|||||oo|o|||oo|ooooo|ooooo||o||oo||ooo||||oo|oooo||||oo|oooo||oo|o|||||| |oo|oo|||||oooooo||||ooo|||||ooo|oo|o|||oo|o|o|||o||ooo||ooo|o|oo|||o|ooo ooooo|o|oo||o||||oo||oo|o|ooo||o|o|o|||ooo||||||o||oo|ooo||o|o||oo|o||ooo |oo|ooooo||o||o|o|oo|oo|||ooo||||o|oo|oo|o||||o|oo|||o||o|||||ooooo|o|ooo |o||ooooooo|||oo|ooo|ooo||||ooo||oo||ooo|||||||ooo|o|ooooo|||||o|o|o|||o|
- 9 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 21:10:16.93 ID:3q5iKhWM.net]
- こんなスレあったんだ
Windowsのフォントって、どのフォントがどのコード体系とか字体を使っている。 などを纏めているところってある??
- 10 名前:デフォルトの名無しさん mailto:sage [2018/12/16(日) 23:11:32.43 ID:/e3hQGaS.net]
- ちょっと考えれば分かるようなことをなぜ聞くんだろう。
- 11 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 20:40:27.55 ID:kiEfSjeK.net]
- ちょっと考えれば解るなんてすごい人だな。
ちょっと書いてみ
- 12 名前:デフォルトの名無しさん [2018/12/17(月) 21:18:18.25 ID:lO+98ZHR.net]
- あげ
- 13 名前:デフォルトの名無しさん [2018/12/18(火) 03:08:10.44 ID:81OlOyOQ.net]
- nkf - Network Kanji Filter Fork
https://ja.osdn.net/projects/nkf/scm/git/nkf/ v2.1.5 2018-12-15 18:19:02
- 14 名前:デフォルトの名無しさん [2018/12/18(火) 11:22:36.98 ID:/M0/bFGF.net]
- >やはり頭悪いのはunicodeと符号化を混同してる
ここは同意 >2つ以上のオクテットを使う符号単位で >BOM入れないヤツは池沼だからな これは嘘
- 15 名前:デフォルトの名無しさん [2018/12/19(水) 00:20:13.76 ID:jOXn0Ht9.net]
- 低学歴知恵遅れには
エンディアンの概念がないのが よおく分かったわ
- 16 名前:デフォルトの名無しさん mailto:sage [2018/12/19(水) 00:28:37.33 ID:t+yG2AJO.net]
- CPUの内部形式とデータには何の関係もない
現にネットワークデータはCPUとは無関係の並びになってる
- 17 名前:デフォルトの名無しさん mailto:sage [2018/12/19(水) 00:54:40.89 ID:s0UhV0Jg.net]
- やっぱあれ書いたの半角さんだったんだw
- 18 名前:デフォルトの名無しさん [2018/12/19(水) 00:57:03.62 ID:jOXn0Ht9.net]
- うわあ。。。
マジでいってんの こういうマジもんの低学歴がこの板で はば利かせてるのがよく分かるわ マジで頭悪いことを ハジもなくなんの躊躇もなくいうからな プログラムで いちいエンディアン変換してんのすら しらないらしいわ 当然Unicodeのエンコード方法にも ビッグエディアンとリトルエンディアンがある
- 19 名前:デフォルトの名無しさん [2018/12/19(水) 00:58:18.75 ID:jOXn0Ht9.net]
- もうね低学歴すぎてヤバイって
ちなみネットワークでデータを交換するときは 暗黙で基本はビッグエンディアンになってる 常識だからなコレ
- 20 名前:デフォルトの名無しさん [2018/12/19(水) 01:00:17.18 ID:jOXn0Ht9.net]
- 低学歴知恵遅れって
なんでものすごい頭悪いことを 自信満々にいうわけ?
- 21 名前:デフォルトの名無しさん [2018/12/19(水) 01:12:57.34 ID:jOXn0Ht9.net]
- ちなみipアドレスの並びはビックエンディアンになってる
ポート番号も当然ビックエンディアンになってる ソケット通信のプログラム組んだことあるなら ポート番号設定するのにhtons(コレはオクテット2つになる)という関数を使ったことあるハズだ ちなみにこの関数はリトルエンディアンの計算機なら ビッグエンディアンに変換された値がかえってくる ビッグエンディアンの計算機なら そのままビッグエンディアンの値がかえってくる
- 22 名前:デフォルトの名無しさん mailto:sage [2018/12/19(水) 01:39:07.45 ID:B2A2n/bL.net]
- 半角カタカナはAAにしか見えない
- 23 名前:デフォルトの名無しさん mailto:sage [2018/12/19(水) 06:24:21.16 ID:wJcYDzdz.net]
- 最近の子はバイトオーダーなんて意識しないからな
常識としては知っててほしいがけど 低レベルな処理書かなきゃ関係ないし触れることもないだろうから知らなくても困らんな アラインメントとかパディングとかも同様
- 24 名前:デフォルトの名無しさん mailto:sage [2018/12/19(水) 12:49:47.13 ID:JIdS0sYR.net]
- エンディアン嘘つかない
- 25 名前:デフォルトの名無しさん [2018/12/19(水) 16:46:27.07 ID:R6d6JT/9.net]
- <
- 26 名前:a href="../test/read.cgi/tech/1544931495/23" rel="noopener noreferrer" target="_blank" class="reply_link">>>23
バイトオーダーを意識する機会が減ったのは、xmlやjsonなどテキスト形式でデータ受け渡しすることが多くなったから。 テキスト形式ならバイトオーダーを意識せずに済むし、スクリプト言語で扱うのにも便利。 [] - [ここ壊れてます]
- 27 名前:デフォルトの名無しさん mailto:sage [2018/12/19(水) 20:30:33.10 ID:gznchIbF.net]
- いやいや、テキストでもUTF16とかUTF32ならめっちゃ意識するやん。
- 28 名前: mailto:sage [2018/12/19(水) 20:51:34.30 ID:C9bIO99C.net]
- >>24
豆知識、endian とは? もともとは、卵を丸い方の端 (big end) から割る人々(Big Endians)と尖った方の端から割る人々 (Little Endians) との対立を表したものだった
- 29 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 01:35:41.75 ID:jYg2YnYV.net]
- そういえばハンプティダンプティの絵文字がない
- 30 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 03:36:13.08 ID:Epiz8Tj2.net]
- バイトオーダーやアラインメントは、C/C++以外の言語でバイナリデータを使おうとした時に強く意識することになる。
C/C++で開発している時はコンパイラが自動的に配置・取得してくれるデータを、スクリプト言語では自力でオフセット調整して配置・取得しなければならない。 C/C++より簡単なことが長所だったはずのC#・Java・Perl・Python言語などで、低レベルなオフセット調節を自力で行う必要に迫られる皮肉な状況が起きる。
- 31 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 04:20:27.30 ID:ojhJ7lIE.net]
- > バイトオーダーやアラインメントは、C/C++以外の言語でバイナリデータを使おうとした時に強く意識することになる。
C/C++言語以外ではライブラリが処理してしまうんで意識しないかな C/C++ライブラリを呼び出すライブラリを作るときは意識するだろうけど、 それって結局C/C++言語で書くんで、あれ?意識するのはC/C++かw
- 32 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 06:53:32.14 ID:Epiz8Tj2.net]
- >>30
例えばWindows環境だと、C/C++以外の言語でWin32API関数を固有の構造体を入出力に使う場合、アセンブリ並みに低レベルなオフセット調節を自力で行う必要に迫られる。
- 33 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 07:18:15.99 ID:ojhJ7lIE.net]
- × 例えばWindows環境だと、C/C++以外の言語でWin32API関数を固有の構造体を入出力に使う場合、アセンブリ並みに低レベルなオフセット調節を自力で行う必要に迫られる。
○ 例えばWindows環境だと、C/C++以外の言語でWin32API関数を固有の構造体を入出力に使う場合、C/C++並みに低レベルなオフセット調節を自力で行う必要に迫られる。
- 34 名前: mailto:sage [2018/12/20(木) 07:37:44.12 ID:W1ypdRwu.net]
- >>32
うーん、具体的な win32api 名(だけでいいです)を例示してください.
- 35 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 07:43:09.20 ID:ojhJ7lIE.net]
- >>31に聞いてください
- 36 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 08:04:20.01 ID:Epiz8Tj2.net]
- >>32
勝手に書き換えないでもらいたい。 C/C++だと構造体の各メンバ変数のアラインメントを意識しなくていいが、他の言語だとそうはいかないので、アセンブリと同じようなオフセット調節が必要。 SendMessage(WM_COPYDATA)の送受信データの読み書きなど例はいくらでもある。
- 37 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 10:08:25.12 ID:48mnxvPx.net]
- >>35
>C/C++だと構造体の各メンバ変数のアラインメントを意識しなくていいが 誰に騙された?
- 38 名前:デフォルトの名無しさん [2018/12/20(木) 13:46:21.36 ID:P4Rv6f7s.net]
- 実行メモリ上はともかく
ファイルやネットワークストリームでLEにするアホいるんか?
- 39 名前:デフォルトの名無しさん [2018/12/20(木) 16:58:53.93 ID:Epiz8Tj2.net]
- エンディアンもさることながら32/64bit整数の幅調節が厄介。
使っている言語が32/64bitどちら向けでビルドされたものなのかによって構造体メンバのアラインメントを適切に処理する必要が出てくる。 言い換えれば、C/C++で作った構造体をバイト列で渡し、C/C++以外の言語でバイト列を構造体に復元する処理が厄介。 単に構造体の64bit整数メンバだけ気を付けるのではダメで、構造体の全メンバのアラインメントそのものが大きく変わりうることに注意する必要がある。
- 40 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 18:26:27.50 ID:6OEKrw3R.net]
- いや、だからさ、その程度までは理解できてるのに、何故「C/C++だと構造体の各メンバ変数のアラインメントを意識しなくていいが」なんてことを言っちゃうの?
それとアラインメントの話とバイトオーダーの話を混同しないように気を付けた方がいいよ。
- 41 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 19:07:05.38 ID:oZOw2Nhk.net]
- C/C++しらないけど、魔法のようにアライメントを
勝手に調整してくれるんじゃないの?想像しただけで
- 42 名前:デフォルトの名無しさん [2018/12/20(木) 21:19:19.38 ID:/Up9dRku.net]
- Unicodeは普通にリトルエンディアンもありだ
なんで Byte Order Mark(BOM) がファイルの先頭に入ってるのか分かってない Javaバイトコードのcafe babeみたいな飾りだと思ってんの リトルエンディアンの計算機ばっかりがあるとこで ビッグエンディアンでファイルを保存する理由なんかないからな 当然、そういったコンテンツデータがHTTPでも流れてくる
- 43 名前:デフォルトの名無しさん [2018/12/20(木) 21:20:17.21 ID:/Up9dRku.net]
- やっぱりこの板には
クルクルパーしかいない そしてそのクルクルパーの声だけがでかい やっぱりな低学歴知恵遅れは この板から排除する必要がある 板が正常に機能しない
- 44 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 21:26:52.62 ID:gpCj1726.net]
- アライメントはふつうコンパイラが適切に調整してくれるよね。
32/64bitで整数サイズの違いでメンバオフセットが変わるってのはアライメントとは別の話。
- 45 名前:デフォルトの名無しさん [2018/12/20(木) 21:31:46.95 ID:/Up9dRku.net]
- 32bitなら
ちゃんと32bitに詰まるように メンバの順序かえる
- 46 名前:デフォルトの名無しさん [2018/12/20(木) 21:38:37.03 ID:/Up9dRku.net]
- char unko
char foo int aho short poi char baka int manuke short boo char woo ↓ int manuke ---- int aho ---- short poi short boo ---- char unko char foo char baka char woo 64bitでも考え方は同じ 強制パッキングのオプション使えるコンパイラもある
- 47 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 21:42:31.32 ID:oZOw2Nhk.net]
- 今問題としてるのはファイルの話だ。
32bitシステムで作られたファイルを64bitシステムに 持ってきたとしてもファイルの内容が変わるわけじゃない つまりC/C++で32bitでint型で扱っていたからと言って 64bitでもint型で扱ってはいけないということだ
- 48 名前:デフォルトの名無しさん [2018/12/20(木) 21:44:56.46 ID:/Up9dRku.net]
- バカがよくやる誤りは
メモリ境界をまたぐ位置で64bit値を参照したりして バスエラーを起こす シリアライズデータを直に参照できると思ってるバカがあとをたたない CISCの計算機しか使ったことないサル並の脳みそのヤツがよくやる
- 49 名前:デフォルトの名無しさん [2018/12/20(木) 21:53:38.53 ID:/Up9dRku.net]
- そんなファイル読み込むときに
普通にintなんか使わないからな そんなことは低学歴知恵遅れしか発想できない utf16なら16bit単位(uint16_t) utf32なら32bit単位(uint16_t) で読み込む リトルエンディアンの計算機で ビッグエンディアンのUnicode読む場合は 16bit単位なら16bit単位でオクテット列の並びを逆転させる 32bit単位なら32bit単位でオクテット列の並びを逆転させる リトルエンディアンの計算機で リトルエンディアンのファイル読み込むならオクテット列の並びを逆転させる必要はない ビッグエンディアンならその逆になる 低学歴知恵遅れはこういった基本的な理解がない
- 50 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 21:59:01.65 ID:gpCj1726.net]
- >>45
C/C++の規格じゃ構造体のメンバは宣言された順にアドレスが増加するよう並べられることになっている。 仮に>>45のような最適化を行うことができる処理系が存在したとしても、一般的と言えるものではない。
- 51 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 21:59:21.79 ID:KozHiIkR.net]
- one little two little three little endians
- 52 名前:デフォルトの名無しさん [2018/12/20(木) 22:00:12.93 ID:/Up9dRku.net]
- だからそう書いてる
手動で自分で並べ替える
- 53 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 22:12:47.37 ID:gpCj1726.net]
- 自分で並べ替えろって話か。それは勘違いした、すまん。
- 54 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 22:23:36.55 ID:tzmwAGAt.net]
- 結局C/C++でもアライメント意識して、自分で適切な型を選択しているってわけさ
他の言語でも一緒。ただし型が違うからバイト数を指定するだけの話
- 55 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 23:02:54.77 ID:Epiz8Tj2.net]
- PGならば、楽するためにJava/C#/Python/Perl/Rubyなどを使ってたはずなのに、C++よりめんどくさくなって心が折れそうになる経験を一度はしておいたほうがいい。
- 56 名前:デフォルトの名無しさん mailto:sage [2018/12/20(木) 23:23:21.93 ID:tzmwAGAt.net]
- いや、C++よりも面倒なことってないから
そんな経験するのは無理だよ
- 57 名前:デフォルトの名無しさん [2018/12/20(木) 23:49:16.62 ID:/Up9dRku.net]
- やはり低学歴知恵遅れには
C++はむり レスみればよく分かる レスから頭の悪さがにじみ出てる 低学歴のレスはすぐにわかるわ 残念なことに
- 58 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 12:36:36.76 ID:C7PBMVlX.net]
- データのアラインメントはどんな言語を使うにしても気にする必要がある。
しかし、Windows が VisualC++ でビルドされていて、VisualC++ もしくは互換のアラインメントができる言語でアプリを組めば、 気にしなくてもよい、ということだけだろう。
- 59 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 14:56:12.53 ID:wVAQd9sY.net]
- >>57
gcc も同じだよ。64bit版linux gccはwchar_tを16ビットにするか32ビットにするかを切り替えビルドできるからさらに厄介。 構造体を丸ごとダンプしたバイナリデータを同じOS上の別プロセスに渡すのは繊細な注意がいる。
- 60 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 16:01:10.01 ID:2iFVCAc3.net]
- で、なんだっけ?バイナリファイルのデータが
16bitで格納されていようが32bitで格納されていようが C/C++だったらアライメントを勝手に調整してくれるんだっけw へー、勝手にねー、intで扱ってれば、勝手に調整してくれるんだーw
- 61 名前:デフォルトの名無しさん [2018/12/21(金) 16:43:13.79 ID:wVAQd9sY.net]
- intが16bitの組み込み向けプログラムであっても同じコンパイルオプションで作ったモジュール同士ならバイナリの復元はC言語の型キャストだけで可能。
構造体が仕様として公開されている場合、どの言語であれアラインメントを意識した実装が必要になるが、C言語は実装コストが最も低くなる傾向はある。 スクリプト言語を使う人がアラインメントを意識せずにすんでいるのは、ライブラリ実装した人が頑張ってくれた・くれているおかげ。
- 62 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 17:01:59.77 ID:2iFVCAc3.net]
- 一方他の言語では、指定したオフセットから何バイト読み込むか指定するだけなのであった
- 63 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 17:02:51.29 ID:2iFVCAc3.net]
- C言語は、ヘッダファイル書いた人が頑張ってくれた・くれているおかげ
- 64 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 17:23:19.85 ID:wVAQd9sY.net]
- >>61
先生。指定したオフセットから何バイト読み込むか指定する作業は、まさにアセンブラと同レベルの作業じゃありませんか。違いますか、先生。
- 65 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 17:47:28.44 ID:2iFVCAc3.net]
- >>63
違いますね。memcpy相当ですから
- 66 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 18:13:53.48 ID:ORTv1gtC.net]
- 低学歴知恵遅れ先生はC/C++スレだけじゃなくてここにもくるようになったのか
- 67 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 21:50:05.59 ID:0muy2Btq.net]
- >>65
色んなところにいるよ
- 68 名前:デフォルトの名無しさん mailto:sage [2018/12/21(金) 22:02:28.52 ID:SVNbSsFy.net]
- 相変わらず日本語の読解に問題がありそうな奴がいるなぁ。
- 69 名前:デフォルトの名無しさん [2018/12/21(金) 23:50:03.63 ID:j37Ohb1y.net]
- まず低学歴知恵遅れは
低学歴知恵遅れの自覚がないからな
- 70 名前:デフォルトの名無しさん [2018/12/22(土) 11:38:13.24 ID:boWDflNh.net]
- 実行時に使用中のCPUがLEかBEかを判定するプログラムを
Cでサンプル欲しいのですがどこかにありますか?
- 71 名前:デフォルトの名無しさん mailto:sage [2018/12/22(土) 13:36:46.26 ID:aa5NQG9N.net]
- bool is_bigendian() {
return htons(1) == 1; }
- 72 名前:デフォルトの名無しさん mailto:sage [2018/12/31(月) 08:52:03.67 ID:Tj5kujd4.net]
- C1制御文字の<128>って多くの文字コードで「PAD」と名付けられているのに
UnicodeでのU+0080はxxxみたいに無名なのって理由ある?
- 73 名前:デフォルトの名無しさん mailto:sage [2018/12/31(月) 13:29:33.60 ID:8Z6ezMyM.net]
- U+0080,U+0081,U+0084,U+0099は、ISO6429/ECMA-48で制御文字に含まれていない
というか削除されてる www.ecma-international.org/publications/standards/Ecma-048.htm www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf WikipediaソースによるとUnicode初期ドラフトにはU+0080も入っていたみたいなことも書かれてるね https://en.wikipedia.org/wiki/C0_and_C1_control_codes#C1_set
- 74 名前:デフォルトの名無しさん mailto:sage [2019/01/01(火) 01:45:48.02 ID:kXQfWbAp.net]
- なんてこった
エイプリルフールだって?
- 75 名前:デフォルトの名無しさん mailto:sage [2019/01/01(火) 23:58:04.80 ID:j16q/z48.net]
- あけましておめでとうございます
2019年は何が起きるかしらね
- 76 名前:デフォルトの名無しさん mailto:sage [2019/01/02(水) 00:20:17.09 ID:R6tFufwf.net]
- エイプリルフールはまだだけど元号ネタとかあるだろうな
新元号『NEO平成』に決定みたいな
- 77 名前:デフォルトの名無しさん mailto:sage [2019/01/02(水) 11:30:40.86 ID:6YX6jwF2.net]
- 新元号『』
- 78 名前:デフォルトの名無しさん mailto:sage [2019/01/02(水) 22:33:06.92 ID:Fz1uszjs.net]
- 新元号が分からなくてグリフが間に合わないからUnicode 12.1を出すってのは仕方ないけど
新元号の組字のためだけにAdobeJapan1を改訂するってのは馬鹿げてる
- 79 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 00:28:36.38 ID:agNiXwq6.net]
- 元号は安晋に内定してるだろ
- 80 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 09:15:51.35 ID:IESB6EpY.net]
- MS-DOS でのプログラミングではメモリ内の特定のバイトについて
文字の中の何バイト目かを 1 バイトずつ遡って調べるということも あったようだけど自分ではそういうコードを書いた記憶がない。 いや、もしかしたらあったのかもしれないけど。 EUC-JP の場合は ASCII なバイトかシングルシフトが現れた時点で 確定するようだけど。Unicode の時代になって良かったね。 まあ、そんなようなことを今更思った。あけましておめでとう。
- 81 名前:デフォルトの名無しさん mailto:sage [2019/01/03(木) 21:04:56.87 ID:ejflNGhp.net]
- >>72
ありがとう。 なにか事情があったんだろうけど、なんだろうね……。
- 82 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 13:59:50.88 ID:8DNHKlb4.net]
- あけおめ
>>79 大昔のことだけど、SJIS 文字列の末尾から検索するプログラム書いてた時は「SJIS、お前はマジで殺す」という気持ちで一杯でした。 もう二度とあんなことはやりたくない。
- 83 名前:79 mailto:sage [2019/01/04(金) 17:36:17.24 ID:opswFKCW.net]
- ありがとう、まさにそういうことです。
p=strchr( path,'\\'); /* おい *p 、お前は本当に '\\' なのか? 表とかじゃないのか? */
- 84 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 18:54:02.55 ID:3Gm4cMvD.net]
- Windows環境ならそこは _mbschr() でしょ。
- 85 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 19:30:16.38 ID:EMYjNY+E.net]
- UnicodeはSJISよりも扱いが複雑だけど
ライブラリが揃ってるからねー 一文字が1バイトだろうと3バイトだろうと 2文字で1文字を表していようが、簡単に一文字判定ができちゃう
- 86 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 21:30:36.38 ID:atCGQoq2.net]
- 複数コードポイントで1文字を表すのって上限って決まってないの?青天井?
- 87 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 22:02:58.14 ID:rG/yv5Zr.net]
- UTF-8なら、最大四バイトだけど、そういうことじゃなくて?
- 88 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 22:11:30.43 ID:FtJLKwOD.net]
- >>86
先ずコードポイントの意味を理解してから質問した方が良い
- 89 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 22:27:33.32 ID:atCGQoq2.net]
- なんかごめん
- 90 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 23:45:49.70 ID:EMYjNY+E.net]
- >>86
最大4バイトじゃないよ 漢字1文字が最大8バイト、Unicodeの「IVS」とは? https://tech.nikkeibp.co.jp/it/article/COLUMN/20100126/343783/ Unicodeは複雑過ぎてライブラリを使わないと正しく扱うのはまず無理 もし自力で文字数をカウントしたいならこれとか読んで頑張れ https://www.kthree.co.jp/kihelp/index.html?page=data/ivs&type=html
- 91 名前:デフォルトの名無しさん mailto:sage [2019/01/04(金) 23:54:23.74 ID:EMYjNY+E.net]
- ZWJシーケンス というのもあるね
https://qiita.com/nonanona/items/b148c212ba7c24942e93#%E7%B5%B5%E6%96%87%E5%AD%97%E7%94%A8%E3%81%AE%E7%95%B0%E4%BD%93%E5%AD%97%E3%82%BB%E3%83%AC%E3%82%AF%E3%82%BFemoji-variation-selector%E3%81%A8%E3%81%AF 見た目上は1文字なのに例えば U+1F468 U+200D U+1F3A8 みたいに3文字になる。
- 92 名前:デフォルトの名無しさん mailto:sage [2019/01/05(土) 00:00:08.40 ID:41KVD0qa.net]
- https://unicode.org/emoji/charts/emoji-zwj-sequences.html#1f441_fe0f_200d_1f5e8_fe0f
酷いねー。見た目上は1文字なのにU+1F441 U+FE0F U+200D U+1F5E8 U+FE0F と5文字分使ってる バイト数だと17バイトみたいね
- 93 名前:デフォルトの名無しさん mailto:sage [2019/01/05(土) 00:03:32.79 ID:fLBZxFEd.net]
- 合成文字・絵文字とかが絡むともっと地獄になるけどな
tech.albert2005.co.jp/201/ https://qiita.com/nonanona/items/b148c212ba7c24942e93
- 94 名前:デフォルトの名無しさん mailto:sage [2019/01/05(土) 00:03:39.55 ID:41KVD0qa.net]
- ZWJを使うと最大11文字だって。
https://n2p.co.jp/blog/column/counting-characters-on-twitter/
- 95 名前:デフォルトの名無しさん mailto:sage [2019/01/05(土) 00:07:24.29 ID:41KVD0qa.net]
- Unicodeは1文字の概念も破綻しちゃったね
1文字に見えるやろ?でもこれは11文字なんや 全く意味がわからないw
- 96 名前:デフォルトの名無しさん mailto:sage [2019/01/05(土) 00:11:16.35 ID:41KVD0qa.net]
- 見た目上の1文字は最大4バイト×11文字で44バイトなのかな?w
11文字ってのは今現在存在する最大が11文字ってだけで青天井? もうライブラリ使ってないと無理だね
- 97 名前: mailto:sage [2019/01/05(土) 00:12:47.39 ID:F8+3E8Pf.net]
- 世の中にあるすべての文字をコード化してやる!
という意義には賛同していたんですけれども、(主に経済的理由により)絵文字が入った時点で失望してしまいました… 仕切りなおしたほうがいいんじゃないですか?
- 98 名前:デフォルトの名無しさん mailto:sage [2019/01/05(土) 00:38:07.30 ID:198zQJKz.net]
- 仕切りなおしてもBCで絵文字は入ります。
というかもはや絵文字は世界中のスマホ/SNSユーザーに愛用されています。 ここまでくるともはや後戻りはできないのです。
- 99 名前:デフォルトの名無しさん mailto:sage [2019/01/05(土) 00:46:41.68 ID:fLBZxFEd.net]
- 仕切りなおすどころかUnicodeの規格がさらに拡張されて状況悪化するんだろうなあ
Unicode12も来年・・・じゃないやもう今年リリースされる予定のはずだし
- 100 名前:デフォルトの名無しさん mailto:sage [2019/01/05(土) 01:28:42.81 ID:41KVD0qa.net]
- 絵文字は象形文字の発展版なんだから
文字扱いするのは当然
|

|