文字コード総合スレ part15 (338レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
200: デフォルトの名無しさん [sage] 2025/01/20(月) 22:15:46.02 ID:fw0guZsp(1/5) AAS
>>198198(1): デフォルトの名無しさん [sage] 2025/01/20(月) 21:50:56.30 ID:fFffNKjx(6/9) AAS
>>177 >>190
WTF-8を新たに作り出すにはvalidなUTF-8から作るか
あるいは16bit列から作るかのどちらかしか手段がない
つまり必ずWTF-16(=任意の16bit列)⇔WTF-8は1対1に対応する
したがってあなたが主張する
「別の冗長表現」は生じることはなく危険なことは絶対に起こらない
普通に結合で新しくOsStringを作ってる例がありますやん
外部リンク[html]:doc.rust-lang.org
202(1): デフォルトの名無しさん [sage] 2025/01/20(月) 22:26:06.74 ID:fw0guZsp(2/5) AAS
何度も書いてるじゃないですか
サロゲートの片方だけなWTF-8同士を結合するとサロゲートペアが揃ってしまって本来あるべき形の別表現となるでしょ
その状態で比較等をすると狂いが生じる話
205(1): デフォルトの名無しさん [sage] 2025/01/20(月) 23:00:53.63 ID:fw0guZsp(3/5) AAS
>>204204(3): デフォルトの名無しさん [sage] 2025/01/20(月) 22:51:08.98 ID:uZ5HVjRv(1/3) AAS
WTF-8 どうしを結合するときは終端処理をしてサロゲートの変換をしないといけない
UTF-8 のように単純に結合することできない
両サロゲートが含まれてるものはWTF-8ではない
そうそうそれそれ。ようやく話が通じそうな人が来てくれた
で、現実には?と
209(3): デフォルトの名無しさん [sage] 2025/01/20(月) 23:27:17.08 ID:fw0guZsp(4/5) AAS
>>206206(2): デフォルトの名無しさん [sage] 2025/01/20(月) 23:18:31.29 ID:uZ5HVjRv(2/3) AAS
>>205
片サロゲートはユニコード的には文字コードではないので片サロゲートの結合をどう処理するかは実装依存
捨てる、未定義文字に置き変える、文字だったことにしてUTF-8変換する、なんかのセパレータを挟むとかできるかもしれない
でも一般的と思われるのは結合処理自体をエラーで失敗させる
WTF-8 にも UTF-8 にも冗長性はない、WTF-8 を UTF-8 と同じように使ってはいけないだけ、両者は別物
OSがファイル名として扱えるバイナリ列を作れないのはむしろそちらのほうが問題になるので
失敗させるのはナシでは
>>206-207
で、今ソースを追いかけていてpushに関しては
外部リンク[html]:stdrs.dev
で>>204の処理がなされてるのを確認しました
つまりpushに関しては俺の杞憂でした(もちろん他の処理は別)
210: デフォルトの名無しさん [sage] 2025/01/20(月) 23:35:21.19 ID:fw0guZsp(5/5) AAS
>>208208(1): デフォルトの名無しさん [sage] 2025/01/20(月) 23:26:06.35 ID:uZ5HVjRv(3/3) AAS
>>206
一応補足しておくと、エラーなどの処理するのは結合時点でなくて、それを何か使おうとしたり、他の文字コードに変換しようとした時点とすることもできる
Invalid な WTF-8 のチェックをどの時点でするかだけの問題
他言語のStringBuilder等ならそうだけど
OsStringには直接の比較関数等もあるので結合時点以外に選択肢は無いと思う
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s