プログラマーなら一度は煩わされたことのある文字コードについてのスレ。
UTF-8、Shift_JIS、JIS、EUC、Unicode、UCS、サロゲートペア、コードポイント、文字コード判定、
合成文字、ソート、TRON、外字コード、その他について語り合いましょう。
各言語での文字列の扱いについての質問もOKです。
基本マッターリ、ささ、茶でもどうぞ。
■過去スレ
文字コード総合スレ part1 http://pc11.2ch.net/test/read.cgi/tech/1031028205/
文字コード総合スレ part2 http://pc11.2ch.net/test/read.cgi/tech/1143375639/
文字コード総合スレ part3 http://pc11.2ch.net/test/read.cgi/tech/1180250376/
文字コード総合スレ part4 http://pc11.2ch.net/test/read.cgi/tech/1228052369/
(スレ再利用)UnicodeとUTF-8の違いは? http://pc12.2ch.net/test/read.cgi/tech/1177930957/
(隔離スレ)UnicodeとUTF-8の違いは? その2 http://pc12.2ch.net/test/read.cgi/tech/1274937437/
文字コード総合スレ part5 http://pc12.2ch.net/test/read.cgi/tech/1236529563/
文字コード総合スレ part6 http://hibari.2ch.net/test/read.cgi/tech/1278923059/
文字コード総合スレ part7 http://toro.2ch.net/test/read.cgi/tech/1306595564/
文字コード総合スレ part8 http://peace.2ch.net/test/read.cgi/tech/1354248962/
文字コード総合スレ part9 http://peace.2ch.net/test/read.cgi/tech/1401301779/
文字コード総合スレ Part10 http://mevius.2ch.net/test/read.cgi/tech/1444822140/
文字コード総合スレ Part11
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/01/22(月) 22:58:23.45ID:UK/uqEp5617デフォルトの名無しさん
2018/08/08(水) 02:09:19.94ID:kZ99Qrjg 余ってる場所を余計なことに使う奴が絶対出てきて、
それを根絶するのに凄い辛い思いをするからヤメレ。
それを根絶するのに凄い辛い思いをするからヤメレ。
618デフォルトの名無しさん
2018/08/08(水) 04:24:19.86ID:tqYMmDjs もうこれ人類的に根絶できないんだろうね
一生これなんだろうね
一生これなんだろうね
619デフォルトの名無しさん
2018/08/08(水) 04:37:42.38ID:XhOfYtOw >>615
utf8でいいよ
utf8でいいよ
620デフォルトの名無しさん
2018/08/08(水) 08:35:31.20ID:/x3y+p/o そういえば、utf9というのもあったな。36ビットコンピュータに最適だとか。
621デフォルトの名無しさん
2018/08/08(水) 14:09:08.17ID:QoUOzAqb UTF-7と言う変態も
622デフォルトの名無しさん
2018/08/08(水) 16:40:51.17ID:QemCzjVB Base64
623デフォルトの名無しさん
2018/08/08(水) 18:02:57.82ID:SZpNbR5J UTF-24を策定するべきだな。
全ての文字を24ビット(3バイト)で表す。
UTF-32の0x00で固定な最上位バイトを省くというので。
BMP外の文字だらけの文章には有利になるだろう。
全ての文字を24ビット(3バイト)で表す。
UTF-32の0x00で固定な最上位バイトを省くというので。
BMP外の文字だらけの文章には有利になるだろう。
624デフォルトの名無しさん
2018/08/08(水) 22:53:07.77ID:jNIJWXgx >>623
だな、固定長はUTF-24、可変長はUTF-8でいいだろう
だな、固定長はUTF-24、可変長はUTF-8でいいだろう
625デフォルトの名無しさん
2018/08/08(水) 23:15:02.85ID:oJrY5QK4 UTF16はいらないとかUTF24がよいとか、変な書き込みする人、同一人物?
CPUのレジスタは32bitまたは64bitなので、1バイトをコピーするのも4バイトをコピーするのも時間コストは同じだよ。
CPUのレジスタは32bitまたは64bitなので、1バイトをコピーするのも4バイトをコピーするのも時間コストは同じだよ。
626デフォルトの名無しさん
2018/08/08(水) 23:48:28.49ID:EMFNgHK2 1バイトと4バイトとかミクロの性能比較なんか殆ど意味無い
627デフォルトの名無しさん
2018/08/08(水) 23:49:21.32ID:SCPSjdZ4 固定長だなんて幻想をまだ見てるの?
628デフォルトの名無しさん
2018/08/08(水) 23:50:49.11ID:7IOaw32y 固定長の方が高速で便利ですやん
629デフォルトの名無しさん
2018/08/08(水) 23:57:42.55ID:oJrY5QK4630デフォルトの名無しさん
2018/08/09(木) 01:13:33.46ID:BF3jeRnZ >>626
ファイルサイズがでかくなればそれだけ処理をする回数が増えるからダイレクトに効いてくる。
ファイルサイズがでかくなればそれだけ処理をする回数が増えるからダイレクトに効いてくる。
631デフォルトの名無しさん
2018/08/09(木) 01:20:56.02ID:BtZU6oOJ CPUひとつあたりの処理速度は10年前とあまり変わってないけど、搭載できるメモリの量は劇的に増えた。
内部実装がUTF32になって文字列リソースが2〜4倍になったとしても利用できるメモリはそれ以上に激増しているのでまったく問題なし。
むしろUTF16やUTF32のほうが頭打ちのCPUにも優しい、ということがわかるはず。
内部実装がUTF32になって文字列リソースが2〜4倍になったとしても利用できるメモリはそれ以上に激増しているのでまったく問題なし。
むしろUTF16やUTF32のほうが頭打ちのCPUにも優しい、ということがわかるはず。
632デフォルトの名無しさん
2018/08/09(木) 09:34:00.04ID:Z95VMlij 16は全然優しくない
24もアライメントを考えると優しくない
24もアライメントを考えると優しくない
633デフォルトの名無しさん
2018/08/09(木) 10:29:52.60ID:4BSOUm1q よし128だ。
634デフォルトの名無しさん
2018/08/09(木) 10:44:02.84ID:NXkdt6vr >>625
放っとけば居なくなるのに
放っとけば居なくなるのに
635デフォルトの名無しさん
2018/08/09(木) 11:03:48.44ID:Z95VMlij >>633
合成やセレクタを撤廃できるのなら128でいいよ
合成やセレクタを撤廃できるのなら128でいいよ
636デフォルトの名無しさん
2018/08/09(木) 11:05:58.21ID:OVYf9YNp UNCODEv6
637デフォルトの名無しさん
2018/08/10(金) 22:27:21.22ID:GO9W3NJ8 UTF24とかメモリアクセス効率悪すぎるだろ。アライン考えろ。
情報交換用文字コードはエンディアンに依存しないUTF8。
内部用の文字コードはアクセス効率が良いUTF32。
貧乏人専用のUTF16。
それぞれ存在理由があるんだよ。
情報交換用文字コードはエンディアンに依存しないUTF8。
内部用の文字コードはアクセス効率が良いUTF32。
貧乏人専用のUTF16。
それぞれ存在理由があるんだよ。
638デフォルトの名無しさん
2018/08/10(金) 23:01:06.31ID:d4sNno4d Windowsの場合、プログラムを何も改修することなくUTF16でサロゲートペアの絵文字を使えているでしょ。
もちろん、文字フォントを描画するAPI、つまりマイクロソフトの中の人が頑張っているからだが。
もちろん、文字フォントを描画するAPI、つまりマイクロソフトの中の人が頑張っているからだが。
639デフォルトの名無しさん
2018/08/10(金) 23:24:23.95ID:d4sNno4d まぁ、Windowsプログラムで、動的に絵文字の肌色・髪色・性別などを変えようと思ったら、
UTF16のサロゲート処理を自分で行う必要があるけどね。
UTF16のサロゲート処理を自分で行う必要があるけどね。
640デフォルトの名無しさん
2018/08/11(土) 00:03:26.88ID:Zp5HrM4G >>637
24が駄目なら8はもっと駄目なんでないの?
24が駄目なら8はもっと駄目なんでないの?
641デフォルトの名無しさん
2018/08/11(土) 10:22:26.41ID:/GDyR5Hs だからUTF8は内部利用じゃなくて情報交換用なんだろ。
642デフォルトの名無しさん
2018/08/11(土) 10:45:32.80ID:0HQvSoaX SJISと取り決めてあるテキストデータにUTF8をぶっこんできた取引先があって
翌朝からの日本社会に大混乱を引き起こしかねない危機に晒された経験がある
UTF8滅ぶべしと俺は本気で思っている
翌朝からの日本社会に大混乱を引き起こしかねない危機に晒された経験がある
UTF8滅ぶべしと俺は本気で思っている
643デフォルトの名無しさん
2018/08/11(土) 10:58:00.76ID:kug6FRsz エンコーディングは関係ないだろ。
決めごとを守れないその取引先と異常データを突っ込まれただけで混乱しちゃうプログラムの問題。
決めごとを守れないその取引先と異常データを突っ込まれただけで混乱しちゃうプログラムの問題。
644デフォルトの名無しさん
2018/08/11(土) 11:30:16.03ID:dFDFw6X4 何年か前に、地域の緊急速報のテストメールか何かに
エンコーディングを混在させて文字化けを地域住民に送って混乱させたのあったな
メールテンプレートのエンコーディングと、流し込む本文で混在させちゃったみたいな
エンコーディングを混在させて文字化けを地域住民に送って混乱させたのあったな
メールテンプレートのエンコーディングと、流し込む本文で混在させちゃったみたいな
645デフォルトの名無しさん
2018/08/11(土) 11:51:55.94ID:AWnFhpjF ないしほてし活復を語本日く書に左らか右どけい良もでき書横
646デフォルトの名無しさん
2018/08/11(土) 13:16:33.61ID:uKNQsIii >>644
去年だぞ
去年だぞ
647デフォルトの名無しさん
2018/08/11(土) 15:11:54.76ID:uEbn4tPy 546<<
ケォヴわいくにみ読
ケォヴわいくにみ読
648デフォルトの名無しさん
2018/08/11(土) 15:47:35.74ID:UCIDniLJ 中東の言語は確か右からだったよな
やろうと思えば簡単そう
やろうと思えば簡単そう
649デフォルトの名無しさん
2018/08/11(土) 15:56:48.16ID:A8A80vkf TeXって右から書くのにも対応してるっけ
650デフォルトの名無しさん
2018/08/11(土) 18:33:53.99ID:Yf3CWOMt sjisの〜とcp932の〜の違いって何?
〜を入力して検索すると、sjisのほうはヒットしないんよね
〜を入力して検索すると、sjisのほうはヒットしないんよね
651デフォルトの名無しさん
2018/08/11(土) 19:10:44.45ID:HdyPScyr652デフォルトの名無しさん
2018/08/12(日) 00:02:17.72ID:ZUsL8uZg >649
ArabTeX を使えば出来ます
ArabTeX を使えば出来ます
653デフォルトの名無しさん
2018/08/12(日) 14:13:27.50ID:pjLEMieq Draft Emoji Candidates
http://unicode.org/emoji/future/emoji-candidates.html
http://unicode.org/emoji/future/emoji-candidates.html
654デフォルトの名無しさん
2018/08/12(日) 14:20:12.48ID:JT/5kO4h 絵文字がんがん増えてるけど、ぱっと見で見分けが付かない微妙なの多いよなぁ
655デフォルトの名無しさん
2018/08/12(日) 14:26:24.04ID:rtSL/abo 馬鹿は同じ過ちを繰り返す
656デフォルトの名無しさん
2018/08/12(日) 14:35:29.88ID:x/eO0jlG そのうち洗練されて象形文字になって、やがて漢字に…あれ?
657デフォルトの名無しさん
2018/08/13(月) 14:33:07.24ID:1RU0E1KE この際1byteを32bitか64bitにしたらどうよ
1byteが8bitになったのはアルファベットや数字が固定長で表せて
2^nbitで処理しやすかったからなんだろうけど
1byteが32bitか64bitになればエンディアンの問題もなくなって分かりやすくなる
1byteが8bitになったのはアルファベットや数字が固定長で表せて
2^nbitで処理しやすかったからなんだろうけど
1byteが32bitか64bitになればエンディアンの問題もなくなって分かりやすくなる
658デフォルトの名無しさん
2018/08/13(月) 14:58:06.25ID:obMX332h そうなんか?
16新数で2桁でちょうどいいからだと思ってた
16新数で2桁でちょうどいいからだと思ってた
659デフォルトの名無しさん
2018/08/13(月) 14:59:26.97ID:obMX332h あと 8bit を 1byte というけど
4bit のことをなんていうの?
4bit のことをなんていうの?
660デフォルトの名無しさん
2018/08/13(月) 15:02:02.90ID:L5U4GWSY >>657
8bitや16bitのCPUはどうすんの?
8bitや16bitのCPUはどうすんの?
661デフォルトの名無しさん
2018/08/13(月) 15:15:08.87ID:fDt52YY1662デフォルトの名無しさん
2018/08/13(月) 15:19:57.39ID:mSGjli4I663デフォルトの名無しさん
2018/08/13(月) 16:04:07.52ID:obMX332h Thx!
DNCL
DNCL
664デフォルトの名無しさん
2018/08/14(火) 02:11:13.81ID:uURIoDLa 無理。各コンピュータ内部なら好きなビッド数にすれば良いけど、インターネットのほぼ全ての規格はオクテットが基準になってる。
インターネット全部作り直すくらいやらないと今更変更できない。
インターネット全部作り直すくらいやらないと今更変更できない。
665デフォルトの名無しさん
2018/08/14(火) 09:43:35.42ID:UwXfpacN byteとoctetを区別すればいいだろ
666デフォルトの名無しさん
2018/08/14(火) 12:58:54.95ID:4hamDsGB >>584
昔の ISO/IEC 10646 がそんな感じじゃなかったっけ?
UCS-4 が Four-Octet Canonical Form (4オクテット正規形) と呼ばれてて
UTF-8 や UTF-16 はあくまで Transformation Format だと。
昔の ISO/IEC 10646 がそんな感じじゃなかったっけ?
UCS-4 が Four-Octet Canonical Form (4オクテット正規形) と呼ばれてて
UTF-8 や UTF-16 はあくまで Transformation Format だと。
667デフォルトの名無しさん
2018/08/14(火) 13:43:48.36ID:RlMqh1JW UTF-32に統一できないなら、UTF-8を残そうがUTF-16を残そうが
どちらも大して変わんないんだよね。
UTF-8 も UTF-16 も既存OSの互換性を保つためにあるのだから
UTF-8はANSI互換性というメリットがあるというけれど
なんてことはない、Unix/Linuxの改修が大変だったから、
文字コードのエンコーディング方式自体を作ったってだけの話
互換性のために作ったものだよ
16bitにすべての文字を収めるのは不可能だが、仮に収まったとしたら
UTF-16はサロゲートペアなどなく1文字16bitというシンプルなものになっていた。
もし最初から32bit必要だと認識していれば、UTF-32という1文字32bitに
統一された素晴らしい文字コードになっていただろう
そしてWindowsはそれを標準文字コードとして採用しただろう。
(WindowsがUTF-16なのは、その頃はUnicode = UTF-16の前身のUCS-2 だったから)
結局固定長でないなら、どちらも面倒なことに大差ないし
互換性を保つために面倒な方式を残すのであれば、
それがUTF-8でもUTF-16でも同じこと
どちらも大して変わんないんだよね。
UTF-8 も UTF-16 も既存OSの互換性を保つためにあるのだから
UTF-8はANSI互換性というメリットがあるというけれど
なんてことはない、Unix/Linuxの改修が大変だったから、
文字コードのエンコーディング方式自体を作ったってだけの話
互換性のために作ったものだよ
16bitにすべての文字を収めるのは不可能だが、仮に収まったとしたら
UTF-16はサロゲートペアなどなく1文字16bitというシンプルなものになっていた。
もし最初から32bit必要だと認識していれば、UTF-32という1文字32bitに
統一された素晴らしい文字コードになっていただろう
そしてWindowsはそれを標準文字コードとして採用しただろう。
(WindowsがUTF-16なのは、その頃はUnicode = UTF-16の前身のUCS-2 だったから)
結局固定長でないなら、どちらも面倒なことに大差ないし
互換性を保つために面倒な方式を残すのであれば、
それがUTF-8でもUTF-16でも同じこと
668デフォルトの名無しさん
2018/08/14(火) 14:30:35.75ID:iWXezx4W UTF-8はエンディアンの問題が無いのが良い
669デフォルトの名無しさん
2018/08/14(火) 15:00:48.27ID:YfFk5ERN 8も16も大して変わらないと言えばそうだけど、種類が少ないに越したことはないし
どっちかひとつ残すならやっぱり8なので、16には退場願いたいね
どっちかひとつ残すならやっぱり8なので、16には退場願いたいね
670デフォルトの名無しさん
2018/08/14(火) 15:32:16.19ID:RlMqh1JW >>669
Windowsという重要な役目があるので無理だってわかってるだろ?
Windowsという重要な役目があるので無理だってわかってるだろ?
671デフォルトの名無しさん
2018/08/14(火) 15:39:29.46ID:tR+8FNHO672デフォルトの名無しさん
2018/08/14(火) 15:47:44.20ID:gsqu+3TO >>670
昔からMSは独自文字コードが大好きだからUNICODEからUTF-16が無くなっても問題ない
昔からMSは独自文字コードが大好きだからUNICODEからUTF-16が無くなっても問題ない
673デフォルトの名無しさん
2018/08/14(火) 16:47:25.95ID:RlMqh1JW >>671
> asciiとの互換性とosの改修は関係ない
大あり。C言語はASCII互換前提となっている。
具体的に言うと、文字列の終端文字が\0なので
UTF-16やUTF-32といった、1文字の中に\0が
含まれてる場合に対応できない
UTF-8でなければprintfなどの基本的でよく使われる関数
全てをUnicode対応に改修しなければならなかった。
もしくは捨て去さるかだ
> asciiとの互換性とosの改修は関係ない
大あり。C言語はASCII互換前提となっている。
具体的に言うと、文字列の終端文字が\0なので
UTF-16やUTF-32といった、1文字の中に\0が
含まれてる場合に対応できない
UTF-8でなければprintfなどの基本的でよく使われる関数
全てをUnicode対応に改修しなければならなかった。
もしくは捨て去さるかだ
674デフォルトの名無しさん
2018/08/14(火) 16:48:00.48ID:RlMqh1JW >>672
昔からUnicode対応なんですがーw
昔からUnicode対応なんですがーw
675デフォルトの名無しさん
2018/08/14(火) 16:54:07.60ID:/zOgrF0V UTF-16やUTF-32も1文字の中に\0が含まれているわけじゃないがな。
676デフォルトの名無しさん
2018/08/14(火) 17:16:53.37ID:X3bC8nHW 含まれるやろ
677デフォルトの名無しさん
2018/08/14(火) 17:17:26.99ID:X3bC8nHW L'\0' は含まれないが '\0' は含まれる
678デフォルトの名無しさん
2018/08/14(火) 17:18:41.77ID:RlMqh1JW http://ash.jp/code/unitbl1.htm
41 41 41 41 0041 A
42 42 42 42 0042 B
43 43 43 43 0043 C
44 44 44 44 0044 D
45 45 45 45 0045 E
右から二番目がUTF16の文字コード
見ての通り基本のアルファベットの中に0x00が含まれてる
つまり ABCは、00 41 00 42 00 43 もしくは 41 00 42 00 43 00 という並びとなり
これをprintf等にわたすとASCII文字として1文字8bitと解釈し、
00を\0とみなすので途中で切れるか全く表示されなくなる
41 41 41 41 0041 A
42 42 42 42 0042 B
43 43 43 43 0043 C
44 44 44 44 0044 D
45 45 45 45 0045 E
右から二番目がUTF16の文字コード
見ての通り基本のアルファベットの中に0x00が含まれてる
つまり ABCは、00 41 00 42 00 43 もしくは 41 00 42 00 43 00 という並びとなり
これをprintf等にわたすとASCII文字として1文字8bitと解釈し、
00を\0とみなすので途中で切れるか全く表示されなくなる
679デフォルトの名無しさん
2018/08/14(火) 17:21:01.63ID:RlMqh1JW 説明足らずな>>675が揚げ足取りだと思われると可愛そうなので(笑)
補足してあげると、UTF-16やUTF-32の1文字はそれぞれ16bit or 32bit で
16bitで\0、32bitで\0 は含まれてないと言いたいのだ
だが今は、printfなど1文字8bitと解釈する関数の話をしているので
8bitずつ見ていくと文字の途中に\0が含まれるのだ
補足してあげると、UTF-16やUTF-32の1文字はそれぞれ16bit or 32bit で
16bitで\0、32bitで\0 は含まれてないと言いたいのだ
だが今は、printfなど1文字8bitと解釈する関数の話をしているので
8bitずつ見ていくと文字の途中に\0が含まれるのだ
680デフォルトの名無しさん
2018/08/14(火) 17:37:04.18ID:YfFk5ERN まあWindowsみたいにcharはロケール依存のままでwchar_tだけUnicodeという構成もあるので
UnixのUnicode対応にUTF-8が必須だったかというとわからんけどなー
UnixのUnicode対応にUTF-8が必須だったかというとわからんけどなー
681デフォルトの名無しさん
2018/08/14(火) 19:46:09.12ID:+lmSJTba >>680
え? Unixもwchar_tはUnicodeだけど?
え? Unixもwchar_tはUnicodeだけど?
682デフォルトの名無しさん
2018/08/14(火) 20:25:18.83ID:cWcfj41B 正確には、既存のコードの多くは wchar_t が使われて無くて、
その対応が大変だっていう話
WindowsはOSすべてを自分たちで作ってるからどうにかなったが、
オープンソースで他人が作ったものの寄せ集めだと対応が大変だろうね
その対応が大変だっていう話
WindowsはOSすべてを自分たちで作ってるからどうにかなったが、
オープンソースで他人が作ったものの寄せ集めだと対応が大変だろうね
683デフォルトの名無しさん
2018/08/14(火) 20:38:21.12ID:+lmSJTba gcc は、 wchar_t を16bitと32bitでコンパイル時に選択できるようになっているので、のちのちWindows以上に厄介なことになるでしょう。
684デフォルトの名無しさん
2018/08/14(火) 22:54:07.34ID:YfFk5ERN >>681
Linuxではそうだけど、Unix一般の話でいうとwchar_tはcharの多バイト文字をひとつの値で表せられるならなんでもいいし
実際BSDはcharがSJISならwchar_tはJISコード
Linuxではそうだけど、Unix一般の話でいうとwchar_tはcharの多バイト文字をひとつの値で表せられるならなんでもいいし
実際BSDはcharがSJISならwchar_tはJISコード
685デフォルトの名無しさん
2018/08/15(水) 01:31:39.17ID:URD+Lz/b OSの中とかプログラム言語とかどうでもいい。
インターネットとかの通信プロトコルでオクテット(8bit)単位で交信、終端は0x0A 0x0Dとかの特定のオクテットコード列を使用とかになってるのが多数ある。
内部では好きなビット数で処理すれば良いけど、通信には8bit単位の処理系も必須。
ユニコード使うかどうか以前の問題。
インターネットとかの通信プロトコルでオクテット(8bit)単位で交信、終端は0x0A 0x0Dとかの特定のオクテットコード列を使用とかになってるのが多数ある。
内部では好きなビット数で処理すれば良いけど、通信には8bit単位の処理系も必須。
ユニコード使うかどうか以前の問題。
686デフォルトの名無しさん
2018/08/15(水) 01:44:12.43ID:Vx/KYfiZ ケチケチ言わずIPV6くらいドカンと拡張しようぜ
687デフォルトの名無しさん
2018/08/15(水) 02:10:10.66ID:sxh1cciH wcharは、内部の符号化に依存しちゃいけないし、幅が 16bitか32bitかに依存するのもよくない
使うのがなかなか難しいね
但し、char と混在させるのは単なる誤り。printf に使うと途中で切れるとかいうのは使う側のミス
使うのがなかなか難しいね
但し、char と混在させるのは単なる誤り。printf に使うと途中で切れるとかいうのは使う側のミス
688デフォルトの名無しさん
2018/08/15(水) 05:49:51.06ID:fSWxnCwv wchar_tやったときない
689デフォルトの名無しさん
2018/08/15(水) 11:55:41.55ID:RPpo5aFa690デフォルトの名無しさん
2018/08/15(水) 13:30:59.38ID:/R99sNfj >>687
printfはchar(のポインタ)を受け取るんだから、wchar_tは使えないでしょ?
というかcharで表示できない文字だから、wchar_tが作られたというのが正しい
そうなると、printfだけでなく多くの文字列用関数に対して
charバージョンとwchar_tバージョンが必要になって、変更しなければいけなくなるよね
それが大変だからUnix/LinuxはUTF-16には対応するのは現実的に不可能
対応が簡単なUTF-8を作りました。という流れ。
>>689
> LANG=C.UTF-16みたいなロケールがあったとしての話だろ
Unix/LinuxはUTF-16に対応するの大変だから、
そんなロケールは実現できないだろうね
似たような理由EUC-JPは対応できたけど、SJISは対応できなかった
と思ったけど以下のような警告出るけど使えるのかw
> # localedef -f SHIFT_JIS -i ja_JP /usr/lib/locale/ja_JP.SJIS
> キャラクタマップ `SHIFT_JIS' は ASCII 互換ではありません, ロケールは ISO C に従っていません
こんなのまで見つけた
http://www.ossforum.jp/jossfiles/Linux_SJIS_Support.pdf
ダメ文字(文字の一部に\が含まれる場合)にさえ、あたらなければ大丈夫ってことなんかな
UTF-16と違って確率的には低いだろうけど
printfはchar(のポインタ)を受け取るんだから、wchar_tは使えないでしょ?
というかcharで表示できない文字だから、wchar_tが作られたというのが正しい
そうなると、printfだけでなく多くの文字列用関数に対して
charバージョンとwchar_tバージョンが必要になって、変更しなければいけなくなるよね
それが大変だからUnix/LinuxはUTF-16には対応するのは現実的に不可能
対応が簡単なUTF-8を作りました。という流れ。
>>689
> LANG=C.UTF-16みたいなロケールがあったとしての話だろ
Unix/LinuxはUTF-16に対応するの大変だから、
そんなロケールは実現できないだろうね
似たような理由EUC-JPは対応できたけど、SJISは対応できなかった
と思ったけど以下のような警告出るけど使えるのかw
> # localedef -f SHIFT_JIS -i ja_JP /usr/lib/locale/ja_JP.SJIS
> キャラクタマップ `SHIFT_JIS' は ASCII 互換ではありません, ロケールは ISO C に従っていません
こんなのまで見つけた
http://www.ossforum.jp/jossfiles/Linux_SJIS_Support.pdf
ダメ文字(文字の一部に\が含まれる場合)にさえ、あたらなければ大丈夫ってことなんかな
UTF-16と違って確率的には低いだろうけど
691デフォルトの名無しさん
2018/08/15(水) 15:55:17.05ID:fksu3zh2 >>662
シュメール文明の神アヌンナキたちの故郷の惑星のことかと思った
シュメール文明の神アヌンナキたちの故郷の惑星のことかと思った
692デフォルトの名無しさん
2018/08/15(水) 16:15:54.08ID:Y4UT7naw 乳首の甘噛み
693デフォルトの名無しさん
2018/08/15(水) 16:25:48.18ID:fSWxnCwv694デフォルトの名無しさん
2018/08/15(水) 16:43:22.85ID:BHOopni+ >>693
だからダメ文字だって
http://ash.jp/code/code.htm
> また、2バイト文字の中に"\"(0x5C)を含むデータが存在するため、文字列がメタ処理されてしまい、文字化けする可能性があります。
LinuxやUnixに限った話ではないけど、
文字を1バイトずつ処理するようなもの(つまりcharポインタ)は
ASCIIと互換性がないと不具合の原因になる
だからSJISやUTF-16やUTF-32はLinuxやUnixで
ネイティブに処理するのは苦手なんだ
だからダメ文字だって
http://ash.jp/code/code.htm
> また、2バイト文字の中に"\"(0x5C)を含むデータが存在するため、文字列がメタ処理されてしまい、文字化けする可能性があります。
LinuxやUnixに限った話ではないけど、
文字を1バイトずつ処理するようなもの(つまりcharポインタ)は
ASCIIと互換性がないと不具合の原因になる
だからSJISやUTF-16やUTF-32はLinuxやUnixで
ネイティブに処理するのは苦手なんだ
695デフォルトの名無しさん
2018/08/15(水) 17:20:00.89ID:/SQznhgr 中途半端な多encoding対応で不具合が出たという話。要はバグ。
696デフォルトの名無しさん
2018/08/15(水) 22:23:06.07ID:URD+Lz/b アホか、アホしか居ないか?
それともわざとボケてんのか?
なんで wchar_t の話と printf の話を一緒に語ってるんだ?
wprintf 🤔
それともわざとボケてんのか?
なんで wchar_t の話と printf の話を一緒に語ってるんだ?
wprintf 🤔
697デフォルトの名無しさん
2018/08/16(木) 02:36:38.02ID:agaekNdO >>696
だからprintfで実装されているものをwprintfに修正するのが大変だって話
またwopenfなどワイド文字対応の関数が存在しない場合も存在する。
それに単純に置き換えてしまうと、今度はASCII環境で動かなくなってしまう
なぜならwchar_tは16bit または 32bitという固定サイズなので
8bitのASCIIは扱えない(当然可変長バイトのUTF-8もwchar_tでは扱えない)
だからwchart_tというものが作られたけど、Linux/Unixはそれを使用して
ワイド文字列対応にするのは現実的に不可能と判断し、
printfで扱えるASCII互換のUTF-8を使うことにした
だからprintfで実装されているものをwprintfに修正するのが大変だって話
またwopenfなどワイド文字対応の関数が存在しない場合も存在する。
それに単純に置き換えてしまうと、今度はASCII環境で動かなくなってしまう
なぜならwchar_tは16bit または 32bitという固定サイズなので
8bitのASCIIは扱えない(当然可変長バイトのUTF-8もwchar_tでは扱えない)
だからwchart_tというものが作られたけど、Linux/Unixはそれを使用して
ワイド文字列対応にするのは現実的に不可能と判断し、
printfで扱えるASCII互換のUTF-8を使うことにした
698デフォルトの名無しさん
2018/08/16(木) 02:59:55.06ID:HgLxU9xg ダウト
wchar_t で普通に ASCII も使える。当たり前。i18n でプログラム組んだことないだろ?
UNIX 系で utf8 が好まれる最大の理由は内部コードとかじゃなくて、ファイル名。
ファイル名に直接 0x00 が入れられないので。あとはネットワークまわり。
wchar_t で普通に ASCII も使える。当たり前。i18n でプログラム組んだことないだろ?
UNIX 系で utf8 が好まれる最大の理由は内部コードとかじゃなくて、ファイル名。
ファイル名に直接 0x00 が入れられないので。あとはネットワークまわり。
699デフォルトの名無しさん
2018/08/16(木) 03:50:25.48ID:agaekNdO そりゃ16bit(つまりUTF-16)として書くか変換すりゃASCIIの範囲の文字列は
扱えるだろうさ、そうじゃなくて8bitのASCII文字が扱えないって話
charは1文字8bitとして定義されたものだが、UTF-8を扱う場合は可変長としても考えられる
wchar_tは16bit (または 環境によっては32bit)であるがUTF-16を扱う場合は16bit単位の可変長、
つまりサロゲートペアを扱える。しかしwchar_tは所詮16bit(または32bit)単位なので8bitは扱えない
そのためUTF-8のファイルを読み込むときには、wchar_tに変換して読み込まなければいけない。
例えば8bitのASCIIコードであれば残りの8bitを\x00で埋めた16bitのUTF-8に変換するとかしてだ。
このようにASCII互換のデータを扱うためには単純にchar型をwchar_t型に置換しただけでは
だめで変換処理が必要になる。それに対してUTF-8であれば、char型を可変長char型と
みなすことでそのまま扱うことができる。文字列の長さをカウントするときとか
1文字単位で処理しなければいけないところだけ、UTF-8を扱えるライブラリを使えば良い
扱えるだろうさ、そうじゃなくて8bitのASCII文字が扱えないって話
charは1文字8bitとして定義されたものだが、UTF-8を扱う場合は可変長としても考えられる
wchar_tは16bit (または 環境によっては32bit)であるがUTF-16を扱う場合は16bit単位の可変長、
つまりサロゲートペアを扱える。しかしwchar_tは所詮16bit(または32bit)単位なので8bitは扱えない
そのためUTF-8のファイルを読み込むときには、wchar_tに変換して読み込まなければいけない。
例えば8bitのASCIIコードであれば残りの8bitを\x00で埋めた16bitのUTF-8に変換するとかしてだ。
このようにASCII互換のデータを扱うためには単純にchar型をwchar_t型に置換しただけでは
だめで変換処理が必要になる。それに対してUTF-8であれば、char型を可変長char型と
みなすことでそのまま扱うことができる。文字列の長さをカウントするときとか
1文字単位で処理しなければいけないところだけ、UTF-8を扱えるライブラリを使えば良い
700デフォルトの名無しさん
2018/08/16(木) 06:01:32.95ID:agaekNdO 訂正
そのためUTF-8のファイルを読み込むときには、wchar_tに変換しながら読み込まなければいけない。
例えば8bitのASCIIコードであれば残りの8bitを\x00で埋めた16bitのUTF-16に変換するとかしてだ。
そのためUTF-8のファイルを読み込むときには、wchar_tに変換しながら読み込まなければいけない。
例えば8bitのASCIIコードであれば残りの8bitを\x00で埋めた16bitのUTF-16に変換するとかしてだ。
701デフォルトの名無しさん
2018/08/16(木) 08:19:53.82ID:RvAH1val ファイルシステムに記録された物理的encodingに依存したコーディングができる方が良いという主張かねぇ。
702デフォルトの名無しさん
2018/08/16(木) 08:31:16.13ID:FM/GQ3/9 Windows標準のXmlLiteというXMLパーサーは、入力ファイルがどんな文字エンコードだろうと、
UTF16に適宜変換するようになっているので、プログラマに読み取り時の文字エンコード選択の余地はない。
UTF16に適宜変換するようになっているので、プログラマに読み取り時の文字エンコード選択の余地はない。
703デフォルトの名無しさん
2018/08/16(木) 10:25:22.61ID:Lp1O0T8c >>701
内部ネイティブ文字コードがcharになっているLinux/Unixでは
char非互換の文字コードに対応するのが大変だったという主張
>>702
Windowsは内部ネイティブ文字コードがUnicode(UTF-16)だから
別にそれでいいのでは?
それにしても結果論ではあるけど、wchar_tは失敗だったねぇ
16bitでは足りないことは最初からわかっていたけど、たとえ32bitであっても
異字体セレクタやらで意味的な1文字のbit数が固定ではなくなってしまった。
固定でないならば単純な実装で文字を扱うのは不可能。
whar_t使うメリットが無くなってしまった。
まあその怪我の功名で絵文字に色がつけられるようになり、肌色の違いも
対応も可能になったんだけど、これも良かったんだか悪かったんだが。
ここまで来たら絵文字以外の文字も全て色変化対応にしたらって思う
そうすりゃエスケープシーケンスなしで色を付けられるよ
もはや文字コードじゃないね
内部ネイティブ文字コードがcharになっているLinux/Unixでは
char非互換の文字コードに対応するのが大変だったという主張
>>702
Windowsは内部ネイティブ文字コードがUnicode(UTF-16)だから
別にそれでいいのでは?
それにしても結果論ではあるけど、wchar_tは失敗だったねぇ
16bitでは足りないことは最初からわかっていたけど、たとえ32bitであっても
異字体セレクタやらで意味的な1文字のbit数が固定ではなくなってしまった。
固定でないならば単純な実装で文字を扱うのは不可能。
whar_t使うメリットが無くなってしまった。
まあその怪我の功名で絵文字に色がつけられるようになり、肌色の違いも
対応も可能になったんだけど、これも良かったんだか悪かったんだが。
ここまで来たら絵文字以外の文字も全て色変化対応にしたらって思う
そうすりゃエスケープシーケンスなしで色を付けられるよ
もはや文字コードじゃないね
704デフォルトの名無しさん
2018/08/16(木) 10:57:13.81ID:dYP+//4M Win10 1809のコンソールはUTF-8対応
Windows Command-Line: Introducing the Windows Pseudo Console (ConPTY)
https://blogs.msdn.microsoft.com/commandline/2018/08/02/windows-command-line-introducing-the-windows-pseudo-console-conpty/
Windows Command-Line: Introducing the Windows Pseudo Console (ConPTY)
https://blogs.msdn.microsoft.com/commandline/2018/08/02/windows-command-line-introducing-the-windows-pseudo-console-conpty/
705デフォルトの名無しさん
2018/08/16(木) 11:03:08.50ID:wiNukf+g アホが頑張るとろくなことにならない
706デフォルトの名無しさん
2018/08/16(木) 20:21:21.81ID:HgLxU9xg wchar_t のこと何もわかっていないのに適当なこと言ってるな。
wchar_t は一つのプログラムで複数の文字コードを切り換えて使うための仕組みで、外部用の多バイトコードから内部文字コードに変換するのは当たり前。
char を wchar_t に書き換えるだけで済むとか誰も思っていない。そんなの言うだけ恥かしい。
大きさも規格では少なくとも 8bit で sizeof(wchar_t) >= 1 というだけ。なので 8bit でも 64 bit でも何でも良い。
windows で UTF16、linux の glibc で UTF32 を wchar_t にいれてるのは勝手にそうしてるだけで、そうしないといけないという決まりはないし、そうじゃないOSも普通にある。内部コードなので何を入れてるかはプログラマやユーザが気にする必要はない。
あと「8bit のASCII」とか寝惚けたこと言ってるけどそんなこと言うやつは文字コードの話する資格ない。ASCII が 7bit というのは常識レベルの知識。
wchar_t は一つのプログラムで複数の文字コードを切り換えて使うための仕組みで、外部用の多バイトコードから内部文字コードに変換するのは当たり前。
char を wchar_t に書き換えるだけで済むとか誰も思っていない。そんなの言うだけ恥かしい。
大きさも規格では少なくとも 8bit で sizeof(wchar_t) >= 1 というだけ。なので 8bit でも 64 bit でも何でも良い。
windows で UTF16、linux の glibc で UTF32 を wchar_t にいれてるのは勝手にそうしてるだけで、そうしないといけないという決まりはないし、そうじゃないOSも普通にある。内部コードなので何を入れてるかはプログラマやユーザが気にする必要はない。
あと「8bit のASCII」とか寝惚けたこと言ってるけどそんなこと言うやつは文字コードの話する資格ない。ASCII が 7bit というのは常識レベルの知識。
707デフォルトの名無しさん
2018/08/16(木) 21:42:21.17ID:rfZ8gqJr それで何が言いたいの?
708デフォルトの名無しさん
2018/08/16(木) 21:43:39.72ID:rfZ8gqJr 常識だし当たり前のことだから、
言ってることに間違いはないってことかな?
言ってることに間違いはないってことかな?
709デフォルトの名無しさん
2018/08/16(木) 21:50:57.04ID:VSd23G4R オレですら電子メールでは半角カナは使わないからな
710デフォルトの名無しさん
2018/08/16(木) 22:12:07.10ID:RvAH1val 今時のまともなMUAでいわゆる半角カナに対応できないものってあるかな?
fj全盛の20年前ならいざ知らず。
fj全盛の20年前ならいざ知らず。
711デフォルトの名無しさん
2018/08/16(木) 22:16:46.79ID:VSd23G4R C/C++
The C and C++ standard libraries include a number of facilities for dealing with
wide characters and strings composed of them. The wide characters are defined using
datatype wchar_t, which in the original C90 standard was defined as
"an integral type whose range of values can represent distinct codes for all
members of the largest extended character set specified among the supported
locales" (ISO 9899:1990 §4.1.5)
Both C and C++ introduced fixed-size character types char16_t and char32_t in the
2011 revisions of their respective standards to provide unambiguous representation
of 16-bit and 32-bit Unicode transformation formats, leaving wchar_t implementation-defined.
The ISO/IEC 10646:2003 Unicode standard 4.0 says that:
"The width of wchar_t is compiler-specific and can be as small as 8 bits. Consequently,
programs that need to be portable across any C or C++ compiler should not use
wchar_t for storing Unicode text. The wchar_t type is intended for storing compiler-defined
wide characters, which may be Unicode characters in some compilers."
カンペキな引用
やはりオレのレスはカンペキ
The C and C++ standard libraries include a number of facilities for dealing with
wide characters and strings composed of them. The wide characters are defined using
datatype wchar_t, which in the original C90 standard was defined as
"an integral type whose range of values can represent distinct codes for all
members of the largest extended character set specified among the supported
locales" (ISO 9899:1990 §4.1.5)
Both C and C++ introduced fixed-size character types char16_t and char32_t in the
2011 revisions of their respective standards to provide unambiguous representation
of 16-bit and 32-bit Unicode transformation formats, leaving wchar_t implementation-defined.
The ISO/IEC 10646:2003 Unicode standard 4.0 says that:
"The width of wchar_t is compiler-specific and can be as small as 8 bits. Consequently,
programs that need to be portable across any C or C++ compiler should not use
wchar_t for storing Unicode text. The wchar_t type is intended for storing compiler-defined
wide characters, which may be Unicode characters in some compilers."
カンペキな引用
やはりオレのレスはカンペキ
712デフォルトの名無しさん
2018/08/16(木) 22:23:45.92ID:VSd23G4R 会社のメールは勝手にメールに含まれる半角を全角にかえやがる
※ 必要で半角をいれてるからな
半角でフォルダ名つけるバカがいるせいで
その半角を含むパスに格納されてる資料のおいてあるパスを送ると
メール送ったあと一時期必ず文句がきてたからな
その資料にアクセスできないと
そんな場所ないと
うんざりしたから
この部分が半角ですと書いてやっても
アクセスできないと返信が来る
何度か半角でフォルダ名つけたバカを探しだして
しばいたろかと思ったわ
※ 必要で半角をいれてるからな
半角でフォルダ名つけるバカがいるせいで
その半角を含むパスに格納されてる資料のおいてあるパスを送ると
メール送ったあと一時期必ず文句がきてたからな
その資料にアクセスできないと
そんな場所ないと
うんざりしたから
この部分が半角ですと書いてやっても
アクセスできないと返信が来る
何度か半角でフォルダ名つけたバカを探しだして
しばいたろかと思ったわ
713デフォルトの名無しさん
2018/08/16(木) 22:33:35.19ID:jJkSajo2 しばくんじゃなくてフォルダ名を変更すれば済むじゃん
あんたタイムゾーンスレでずっとそういう趣旨のこと言ってるよねw
あんたタイムゾーンスレでずっとそういう趣旨のこと言ってるよねw
714デフォルトの名無しさん
2018/08/16(木) 22:38:11.04ID:VSd23G4R フォルダ名は一回変更したわ
すると突然
半角以下にあるリンクがすべてアクセスできなくって
みなが大騒ぎになったわ
そんなことやったのはだれだと
幸いオレがやったとバレずに済んだが
すると突然
半角以下にあるリンクがすべてアクセスできなくって
みなが大騒ぎになったわ
そんなことやったのはだれだと
幸いオレがやったとバレずに済んだが
715デフォルトの名無しさん
2018/08/17(金) 00:58:59.23ID:6wrElEJt 掲示板に半角カナで書くバカもいる
716デフォルトの名無しさん
2018/08/17(金) 01:01:58.63ID:6wrElEJt メールで送らなければいい
会社のメールを変えればいい
会社を変えればいい
半角君の発想だとこんな感じ
会社のメールを変えればいい
会社を変えればいい
半角君の発想だとこんな感じ
717デフォルトの名無しさん
2018/08/17(金) 02:37:02.49ID:adBXNxGj 掲示板に半角カナ使うなとか原始人かよw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★5 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★2 [お断り★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★4 [BFU★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 【愛国者速報】フィフィ、中国の“日本産水産物輸入停止”措置に私見「中国依存しないとやっていけない企業は考えを改めて」 [856698234]
- 【ござる専🏡】風間🥷配信実況スレ🏯【風間いろは】
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- 中国「私達が怒ってるのは日本の政治家に対してで、日本の観光客や日本企業はこれまで通り歓迎する。これこそが大国としての余裕」 [377482965]
- おさかなさんあつまれえ
- 高市コイン、ガチで156円突入へwwwwwwwwww [246620176]
