X



文字コード総合スレ part13

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2020/07/03(金) 20:53:47.08ID:elbfDzqw
Windows NTは初代からUnicodeがネイティブの文字コードです。cp932ではありません。
プログラマーなら一度は煩わされたことのある文字コードについてのスレ。
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 https://mevius.5ch.net/test/read.cgi/tech/1516629503/
文字コード総合スレ Part12 https://mevius.5ch.net/test/read.cgi/tech/1544931495/
2023/03/01(水) 07:51:50.58ID:OaPBPWBe
>>925
許可(BOM Allowed)は書いてありますが、禁止とは書かれてませんね。
非推奨は禁止という意味ではないですね
2023/03/01(水) 07:56:52.79ID:OaPBPWBe
翻訳しときますよ

While there is obviously no need for a byte order signature when using UTF-8,
there are occasions when processes convert UTF-16 or UTF-32 data containing a byte order mark into UTF-8.

UTF-8を使用する場合、バイトオーダー署名は明らかに不要(訳注 禁止ではない)であるが、
プロセスがバイトオーダーマークを含むUTF-16やUTF-32のデータをUTF-8に変換する場合がある。
(訳注 つまり UTF-8 に BOM が含まれることがある)

Its usage at the beginning of a UTF-8 data stream is neither required nor recommended by the Unicode Standard,
but its presence does not affect conformance to the UTF-8 encoding scheme.

UTF-8データストリームの冒頭で使用することは UTF-8データストリームの先頭での使用は、
Unicode Standardでは必須でも推奨でもありませんが、その存在はUTF-8エンコーディングスキームへ
の適合性に影響を与えず、UTF-8エンコーディングスキームへの適合性に影響を与えません。
(訳注 ここからも必須でも推奨でもないだけで、適合性に影響を与えないと書いてある)

Identification of the <EF BB BF> byte sequence at the beginning of a data stream can, however,
be taken as a near-certain indication that the data stream is using the UTF-8 encoding scheme.

データストリームの先頭の<EF BB BF>バイト列の識別は、そのデータストリームがUTF-8エンコーディング方式を
使用していることをほぼ確実に示すものと見なすことができる。
(訳注 UTF-8を使用していると確実に示すという意味だから使っていいということ)
2023/03/01(水) 09:10:35.41ID:XRlhYtl4
結局
禁止とも使えとも明記されてない
書かれているには「不要で非推奨」だな。
2023/03/01(水) 09:12:03.02ID:GQlAPTkO
Unicodeの仕様としてはBOMは合法
もし禁止してるとしたらそれはそのアプリやサービスの独自仕様
2023/03/01(水) 09:17:42.66ID:XRlhYtl4
>>929
合法とはまた変な表現を出して来たな。規格の準拠性に影響を与えないと言いたいのならそれは正しい。
でも「不要で非推奨」な。つまり「利用者や通信相手の許可無く使うこうとは
931デフォルトの名無しさん
垢版 |
2023/03/01(水) 10:03:24.48ID:68s28u+f
>>923
+1
932デフォルトの名無しさん
垢版 |
2023/03/01(水) 10:07:23.21ID:68s28u+f
>>927
>プロセスがバイトオーダーマークを含むUTF-16やUTF-32のデータをUTF-8に変換する場合がある。
>(訳注 つまり UTF-8 に BOM が含まれることがある)

訳注を善意的に解釈すると
間抜けな変換ツールによる変換時にそのまま先頭のBOMが残ることはあるかも知れないが
新たなプレーンテキストにはBOMは入れないでくれって読めるな
933デフォルトの名無しさん
垢版 |
2023/03/01(水) 10:10:47.18ID:68s28u+f
>>627
>Unicode Standardでは必須でも推奨でもありませんが、その存在はUTF-8エンコーディングスキームへ
>の適合性に影響を与えず、UTF-8エンコーディングスキームへの適合性に影響を与えません。
>(訳注 ここからも必須でも推奨でもないだけで、適合性に影響を与えないと書いてある)

漏れは改行コードは LF だけ派なんだけど
君は CR+LF 必須だと思ってる?
2023/03/01(水) 10:11:39.61ID:68s28u+f
安価ミスすまそ
935デフォルトの名無しさん
垢版 |
2023/03/01(水) 11:54:30.89ID:VYfkavGa
読み手がBOM付きデータをどう扱うかは、経営の話であって技術の話ではない。
サービスサポートするファイル形式を減らすことで生じる機会損失の軽重を判断するのは経営の領分であって技術の領分ではないから。
2023/03/01(水) 12:40:14.45ID:XRlhYtl4
>>935
規格書の話してるのに経営とか言い出すアホ。規格書に「BOMは不要」って書かれてたのがよっぽど悔しいのかね。
規格は法律じゃないんだから、お前は経営判断wで無視してもいいよ。利用者や通信相手が納得してるのなら規格なんて読まなくて良い。オレオレ実装でOK。
ただし技術の話しないんならスレチ、よそでやれ。
937デフォルトの名無しさん
垢版 |
2023/03/01(水) 14:20:00.05ID:VYfkavGa
>>936
逆だよ。
「BOMをつけるな」は経営の話。
BOMつきにうまく対処することは技術の話。
2023/03/01(水) 15:32:04.65ID:lE31oeIj
技術的に対応できるのであれば、
それに対応するのに割くリソースというかコストをどう考えるかが問題になるもんな
BOMなしで統一しているところにBOM付きが紛れ込めば、
必然的にそれに対応しなければならない
その対応分のリソースを他に振り分けることが有用であるから、
「BOMをつけるな」というのはコストの話ではある
939デフォルトの名無しさん
垢版 |
2023/03/01(水) 15:47:34.03ID:VYfkavGa
切符を買わずに乗ってきた客がいた場合、切符を売ることなく摘まみだすかどうかは鉄道会社や車掌が決めることであって、技術者である機関士の領分じゃないんだよ
2023/03/01(水) 18:23:02.55ID:68s28u+f
鐵ヲタさんいらっしゃい
2023/03/01(水) 18:30:00.14ID:XRlhYtl4
>>937
技術者「BOMは不要かつ非推奨」
2023/03/01(水) 19:22:22.84ID:VBsu1zb7
「非推奨のものを他人に勧めるな。隠れてこっそり使う分には誰も困らないので、こっそりやれ、ここに書き込むな」
ここまでの結論。
2023/03/01(水) 20:40:41.27ID:UJmHFiTt
>>932
解釈する余地はない
許可されてるって書いてあるんだから

https://www.unicode.org/versions/Unicode15.0.0/UnicodeStandard-15.0.pdf

ここの40ページにBOMが許可されてるって書いてある

Table 2-4. The Seven Unicode Encoding Schemes
Encoding Scheme: UTF-8
Endian Order: N/A
BOM Allowed?: yes
2023/03/01(水) 21:06:32.67ID:Ia8UybxF
うわー、まだやってんのか?
とっくに結論は出ただろうに、、、
2023/03/01(水) 21:25:20.33ID:GQlAPTkO
お互いが自分の意見こそ結論だって言いあってるからね
2023/03/02(木) 00:13:31.42ID:l6zpHt6k
結論はBOM Allowed?: yesとでてるのに
それを認めたくないのでしょう
2023/03/02(木) 01:19:24.89ID:SYo8L+Nt
もともと BOM をつけろというやつと BOM は不要というやつがいて、規格に BOM は不要で非推奨と書かれていることが判明した。
BOM をつけろと言ってた側が互換性のために BOM を付けても規格準拠というのを理由に土俵際でねばってる。
どうやっても BOM は不要という結論にしかならないのに。
2023/03/02(木) 01:26:38.91ID:w/H+Tpf4
つけろ派と不要派じゃなくて
つけてもいい派とつけるな派の争いに見えるんだけど
2023/03/02(木) 01:39:10.27ID:SYo8L+Nt
>>948
つけろ派は押されてトーンダウンした。
勝手につける分には一人も反対していない。
人に推奨して良いかどうかが今の境界線
2023/03/02(木) 01:48:43.41ID:s9PRV0S9
すでに原理主義の突き合わせでしかないだろ
2023/03/02(木) 02:12:10.89ID:SYo8L+Nt
>>950
技術的に何が正しいか議論してるのに、話を逸して誤魔化そうとしてるやつがいるだけ。技術的には
「規格では不要、ついでに非推奨。非推奨のものを他人に勧めるな。勝手に使う分には好きにしろ」
で合意が取れるはずなんだが。
2023/03/02(木) 03:43:37.41ID:l6zpHt6k
>>947
> 規格に BOM は不要で非推奨と書かれていることが判明した。
ちゃんと基礎知識を身につけろ

BOMはバイトオーダーマークの略で、UTF-16などのために作られた仕様
互換性のためじゃねーよ。Unicodeで必要だからBOMが作られたんだろ

でUTF-8は1バイト単位の可変長だから、BOMはいらないはずだって主張するやつが出てきた
ところがどっこいBOMにははUnicode Signatureの意味があることが判明した
(知っている人にとっては常識)

そしてUTF-8でBOMは仕様違反だとか禁止とか言ってるやつのトーン下がって
「非推奨だから付けたらだめ」みたいな屁理屈を言い始めたが
PDFにBOM Allowed?: yesという文言が見つかって、ゲームオーバーっていうのが
これまでの流れだ
2023/03/02(木) 03:44:43.31ID:l6zpHt6k
>>951
ちゃんと「規格で許可されている」って書こうね
これは事実なんだから
それができないから、嘲笑されてる
954デフォルトの名無しさん
垢版 |
2023/03/02(木) 04:24:23.36ID:0lgr0WAt
お前ら何もわかってないな
各サービスに複雑な文字コード自動判定処理が追加されたことで、
UTF-8/16/32であることをオレオレ自己申告して複雑な文字コード自動判定をスキップするBOMの存在価値はかえって高まったのだ
2023/03/02(木) 09:28:49.86ID:eRjCsfKd
>>952
脳内で歪んだか?
過去レス見直しても「規格に禁止と書いてある」と主張してるやつは一人もいないぞ
「規格に不要かつ非推奨って書いてある」と主張してるやつは多数いる
2023/03/02(木) 09:31:59.48ID:eRjCsfKd
>>953
だから勝手につける分にはつけていいだろ。
「許可、不要、非推奨」なのは認めるんだな? 復唱してみろ。
2023/03/02(木) 09:35:25.95ID:l6zpHt6k
>>955
だからなんで「規格で許可されている」を消すんだよ?
「規格で許可されているが、必須ではなく推奨もしていないと書いてある」だろうが

Its usage at the beginning of a UTF-8 data stream is neither required nor recommended by the Unicode Standard,
but its presence does not affect conformance to the UTF-8 encoding scheme.

UTF-8データストリームの冒頭で使用することは UTF-8データストリームの先頭での使用は、
Unicode Standardでは必須でも推奨でもありませんが、その存在はUTF-8エンコーディングスキームへ
の適合性に影響を与えず、UTF-8エンコーディングスキームへの適合性に影響を与えません。


neither required nor recommended
→ neither 必須 nor 推奨
→ 必須ではなく、推奨でもない

不要は unnecessary だ
訳ぐらい間違えんな
2023/03/02(木) 09:36:34.26ID:l6zpHt6k
>>956
「許可されている。必須ではない。推奨されていない。」と認めるわけだぞ。

BOM Allowed?: yes
neither required nor recommended

書いてあるとおりだ。
959デフォルトの名無しさん
垢版 |
2023/03/02(木) 09:51:49.99ID:rYHGX+R7
>>946
付けろとは描いてないだろ
それがすべてだ
2023/03/02(木) 09:53:53.57ID:SYo8L+Nt
>>958
それでいいよ。技術的には不要でも必須でもないでも同じ意味だ。
必須でなくて非推奨なものの他人につけろっていったり、対応を要求したりしなければOK。
961デフォルトの名無しさん
垢版 |
2023/03/02(木) 09:54:35.67ID:rYHGX+R7
>>948
つけてもいいということはつけなくてもいいということだ
要らないものをつけるためには理由が必要
その理由があまりにもくらだんから全部却下されてるのが今の流れ
2023/03/02(木) 10:17:01.49ID:l6zpHt6k
> 要らないものをつけるためには理由が必要

だから何度もUnicode Signatureって
書いてあるって話をしてるんだがな
2023/03/02(木) 10:50:40.57ID:/D1s32sE
文字コードが統一されているシステムなら(意味が無いから)BOMは付けない
他の文字コードも扱うシステムなら(識別子として)BOMを付けるか検討する
で良いじゃん
964デフォルトの名無しさん
垢版 |
2023/03/02(木) 11:50:12.21ID:p0hvnhfU
https://ascii.jp/elem/000/004/058/4058837/2/
https://ths.ashigeki.net/2008/01/utf-8bom.php
965963
垢版 |
2023/03/02(木) 12:05:55.59ID:/D1s32sE
書き忘れた
他の文字コードも扱うシステムでも、文字列以外から文字コードが分かるならそちらを使い、BOMは付けない

BOMが欲しくなるのはSJISとUTF-8等が混在するWindowsのファイル
ファイルのメタデータとして文字コードが設定出来れば良いのに
2023/03/02(木) 12:53:49.69ID:dC3Ayx4m
windowsなら
hoge.utf8.txt
hoge.sjis.txt
で解決
しらんけど
2023/03/02(木) 13:07:13.28ID:XGv9oiQm
ファイルの拡張属性にでも,TextEncoding を加えておけば良いんでは?
2023/03/02(木) 13:08:38.21ID:i0CU6OJ9
いや、そこまでしてBOMを避ける理由がわからん
BOMでなければなんでもいいのかよw
2023/03/02(木) 13:36:36.77ID:SYo8L+Nt
>>968
好きな理由1つ選んで
・UTF-8の最大の特徴はASCIIと上位互換、BOMをつけたら台無しになる
・今はUTF-8 はBOM無しが主流
・将来の外部コードはUTF-8のBOM無しになることがほぼ確定している
・移行期だけのために余計なものをつけたくない
・BOMつきだと動かないシステムがある
・文字コードの自動判定はバグやセキュリホールの温床になるので削除したい
・SJISとか時代遅れのものはもう使用してない
・BOMの曖昧さはセキュリティホールになる可能性がある
・ZWNBS との曖昧さがいやらしい
・規格で非推奨のものは避けたい
・ファイルの接続とか分割やファイル名操作などに曖昧さがあるのはいや
・不要なものを付ける理由が思いつかない
・とにかく嫌い
他にも理由はあるだろうけど、人それぞれ
2023/03/02(木) 13:36:59.98ID:QpnfRCZF
BOMを付けておくと都合がいいケースがたまたまあっただけ
2023/03/02(木) 15:35:38.23ID:j9aKoD1k
・移行期だからこそBOMで他のエンコーディングと区別できるようにしておきたい場合がある
・BOMなしだと動かないシステムがある
・文字コードの自動判定はバグやセキュリホールの温床になるのでBOMを付けておきたい
・SJISはJIS X 0208で標準化されている現役の規格
・今のUnicodeの規格ではZWNBSP(U+FEFF)ではなくWORD JOINER(U+2060)の使用が強く推奨されているのでBOMとの曖昧性は起きない
・規格で許可されてるものを無理に避ける必要はない
・許可されているものを避ける理由が思いつかない
972デフォルトの名無しさん
垢版 |
2023/03/02(木) 15:58:33.33ID:0lgr0WAt
すべてはカネ次第。カネを出す人が決めればいいだけ。つまり経営マターってこと。
2023/03/02(木) 16:21:08.46ID:H1OYjGZw
> ・文字コードの自動判定はバグやセキュリホールの温床になるのでBOMを付けておきたい

BOM付けてリスク変わる?
2023/03/02(木) 17:03:17.28ID:i0CU6OJ9
そりゃ変わるだろ、BOMが付いてれば判定ミスがなくなる
2023/03/02(木) 17:19:23.19ID:H1OYjGZw
BOM見てUTF-8だってのは自動判定の一要素でしかないしBOMなし対応いらなくなるわけじゃないから変わらないと思うんだけどな
ユーザー視点の話なら一つ前のと同じこと言ってるわけだし
976デフォルトの名無しさん
垢版 |
2023/03/02(木) 17:51:26.36ID:0lgr0WAt
>>975
ゴールポストを動かすように自動判定の定義を動かすのはみっともないからやめとけ
2023/03/02(木) 18:28:28.35ID:l6zpHt6k
>>975
BOMは99.999%正しく判定できる自動判定だよ
実質完全に判定できるといっても過言じゃない。
2023/03/02(木) 18:43:46.01ID:SYo8L+Nt
>>977
自動判定のセキュリティ・リスクはそういうところじゃないよ。認識率100%でも起こる、むしろそっちが攻撃に使い易い。セキュリティまわりは勉強したことない素人が思いつくほど単純じゃない。
2023/03/02(木) 19:12:41.37ID:/D1s32sE
>>978
BOMによる自動判定だけなら先頭の数バイトの固定パターンを見るだけの単純なものだから
バグの入り込む余地はかなり小さくなるだろ
2023/03/02(木) 19:16:14.91ID:l6zpHt6k
>>978
つまり世の中のテキストエディタからEUC-JP対応を削除しろって話をしてるの?
2023/03/02(木) 19:30:13.68ID:H1OYjGZw
仕様で文字コードが固定されていようがBOMで判断しようが
不正データを読んで変なことにならないようにすることと全く関係ないだろ
もしかして「文字コードの自動判定」という機能単体の話でBOMチェックだけならば堅牢だって趣旨だったのか
2023/03/02(木) 20:53:06.62ID:YeVHKr55
「文字コードの自動判定にはセキュリティリスクがある」

BOMによる判定も自動判定だ

だからBOMにセキュリティリスクがある

なにこの三段論法w
2023/03/02(木) 21:03:19.85ID:4xkEbAJQ
そんなこと言ってんのお前だけやで
2023/03/02(木) 21:44:42.19ID:H1OYjGZw
BOMがあればデータチェックをスキップしていいと考えるやつがいることを想定するなら確かに心理的セキュリティリスクが存在することにはなる
でもそんな話はしていないんだよなあ
俺の起点は>>971に対するものでこれは>>969を受けてのものだから最初からBOMによる自動判定の話だし
2023/03/02(木) 21:56:36.58ID:ymadH6pR
https://github.com/reactos/reactos/blob/6d57c6c91cdf2854b73b9696cd45f41322449368/base/applications/notepad/text.c#L40
ちなみにReactOSのメモ帳の文字セット判定はこうなっている。
2023/03/03(金) 00:03:50.07ID:GXuOSZhF
>>984
すげー単純な例だとバイナリファイルの先頭に UTF-8 BOM つけてテキストに偽装、ファイアウォールやウィルスチェックをすり抜ける。うかつなソフトが自動判別してBOMを外して次段に渡してマルウェア発動。
アホみたいだがこんなんで実際に被害が出てるんだぜ。実際はこんな単純じゃなくてもっと複雑で発見され難い攻撃ができる。
2023/03/03(金) 01:54:41.66ID:BY62yhT8
>>971
ZWNBS についてだが uniccode standard には
「BOMが不要な場合には先頭の U+FEFF は後方互換性のために ZWNBS と解釈される」という規定がある。
これと「UTF-8 に BOM は不要」という規定を合わせると...入力処理系の実装はどうなる? 曖昧さがあるだろ。
2023/03/03(金) 02:53:30.47ID:NQKxEL/3
>>986
BOMをなくすとバイナリとして扱うのか?
それともテキストして扱うのか?
2023/03/03(金) 02:55:06.26ID:NQKxEL/3
>>987
まずお前の言う「入力処理系」が何なのか説明しろ
「あれが困る」みたいな曖昧な言い方をするな
2023/03/03(金) 05:11:52.34ID:Utd2ywhQ
バイナリとして扱ったとしてもデータとして使うのか?
それとも実行可能ファイルとして使うのか?
後者はもう BOMの使い方を大きく離脱しているな
991デフォルトの名無しさん
垢版 |
2023/03/03(金) 09:15:08.54ID:oC7cFOXy
I hate Windows.
992デフォルトの名無しさん
垢版 |
2023/03/03(金) 09:18:38.82ID:oC7cFOXy
https://answers.microsoft.com/en-us/windows/forum/all/i-hate-windows-11-so-incredibly-much-i-wish-i/877bb2ef-1784-4c8d-a341-53733ef4c1ea
993デフォルトの名無しさん
垢版 |
2023/03/03(金) 09:24:55.04ID:oC7cFOXy
>>980
ついでにSJIS対応もISO2022JP対応も削除で
994デフォルトの名無しさん
垢版 |
2023/03/03(金) 09:26:04.28ID:oC7cFOXy
>>982 が稀に観る白雉
2023/03/03(金) 11:30:01.20ID:I6sfeYN1
誰だシェルスクリプトをBOM付きで編集したのは!
2023/03/03(金) 11:33:14.61ID:NQKxEL/3
お前だろ

ってかBOMは許可されてるのに
そういう例外を持ってきてわーわー騒ごうとするのは頭が悪い
2023/03/03(金) 12:02:55.61ID:oC7cFOXy
シェルスクリプトが万が一BOM付きshebangを解釈するようになったとしても
catはどう処理されるんだろ
面倒だから止めてるんだろうな
998デフォルトの名無しさん
垢版 |
2023/03/03(金) 12:46:30.84ID:NnDpncr7
昔のmsysのcat.exeは0x0Aを勝手に0x0D0x0Aに変換して出力する仕様だったので、人知れず泣いた人多かったんじゃないかと思う

>>997
BOMをスキップするオプションとか追加すれば対処できるんじゃまいか
2023/03/03(金) 12:50:33.85ID:oC7cFOXy
binaryオプション付けなければwin上で0d0aにされても文句言えない罠
しかしデフォでbom無であるべきで
デフォがbom付になるのは許すまじ
2023/03/03(金) 12:50:48.52ID:oC7cFOXy
EOF
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 972日 15時間 57分 1秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況