[過去ログ] Win32API質問箱 Build125 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
673: 2019/11/26(火)14:53 ID:hqQvrruW(1) AAS
結局W系で作るしかないんだから余計なことは考えなくていいよ
674(1): 2019/11/26(火)14:54 ID:ogXaluX+(1/4) AAS
fopen()の振る舞いで困るかも。Win32のfopen()はutf8を特別扱いするから。
675: 2019/11/26(火)14:56 ID:dAEqoOXB(5/5) AAS
レジストリの読み書きも気になるな
676: 2019/11/26(火)15:01 ID:JyI6kWkc(2/5) AAS
>>671
いわゆるバイナリモードを使うとBOMがついてきちゃうとか、
いろいろトラブルが発生する可能性はあるね
前回のアップデートでもコンソールで文字化けする問題があったし
それをざっくり言えば、古いアプリを捨てるか、設定変えんな、
という話になるだろ
APIオタクと運用を見てる人で視点が違うことを理解しなよ
>>668
>まあそれは正論なんだが、さっきも書いたようにクライアントの責任であっても
それは契約文書にきちんと盛り込むべきだね
677: 蟻人間 ◆T6xkBnTXz7B0 2019/11/26(火)15:25 ID:SWHzOLKZ(1/2) AAS
MultiByteToWideChar/WideCharToMultiByteの第一引数にシフトJISコードページ932を指定しないといけないらしい。CP_ACPだと死ぬ。
678: 2019/11/26(火)15:33 ID:Yz+apKYY(10/11) AAS
>>672
壊されないよ。日本語が化けることはあっても
それは想定とは違うデータが入っただけだし
アプリの問題
679(1): 蟻人間 ◆T6xkBnTXz7B0 2019/11/26(火)15:37 ID:SWHzOLKZ(2/2) AAS
シフトJISテキストファイルにUTF-8テキストが混ざったら、そりゃ文字化けするでしょう。
680: 2019/11/26(火)15:56 ID:9NQ9wJPH(1/10) AAS
>>679
無茶苦茶になるよな
ありえんわ
681: 2019/11/26(火)16:01 ID:Yz+apKYY(11/11) AAS
コードページを変えると文字化けするだろうね
それだけの話。別に動かなくなるわけじゃない。
コードページをもとに戻せば動く
壊れたデータは直せばいいだけ
682(1): 2019/11/26(火)16:02 ID:ogXaluX+(2/4) AAS
main()に渡される引数文字列argvどうなります?
683(1): 2019/11/26(火)16:23 ID:9NQ9wJPH(2/10) AAS
自前で先行バイト検出しながら文字列書き換えるような関数とか如何すんのよ
684(2): 2019/11/26(火)16:23 ID:H048FZbZ(1/11) AAS
>>682
Unicode非対応アプリのmainだとして、
Unicode対応アプリ(からUnicode APIを使って)呼び出せば、引数全てがUTF-16からUTF-8に変換されてから
呼び出される。Unicode非対応アプリから呼び出せば、渡した文字列(バイト列)がそのまま渡される。
そこは今までと変わらない。今までもUnicode対応アプリから呼び出せば、設定されたコードページ(例えばcp932)に
変換されて呼び出される。違いはUTF-16からUTF-8だと変換できない文字がないので文字化けは一切発生しない。
なお、渡されたからと言ってアプリが正しくその文字列を扱えるかどうかは別の話
結局の所cp932専用で作られたアプリは完全に同じようには動かない。(ASCIIの範囲でなら問題ないだろう)
685(1): 2019/11/26(火)16:25 ID:H048FZbZ(2/11) AAS
>>683
実装と場合(データ)によるとしか言えない。
Unicode(UTF-16)非対応の古いアプリは、想定したコードページでしか
まともに動かない。それだけの話だよ。
686: 2019/11/26(火)16:25 ID:H048FZbZ(3/11) AAS
あと、システムプロファイルとか意味不明。
何の話をしてるのかわからないレベル。
687: 2019/11/26(火)16:30 ID:H048FZbZ(4/11) AAS
ちなみにUnicodeから非Unicodeへの変換は変換できない文字があるから一部文字化けするが、
非UnicodeからUnicodeへの変換では文字化けすることはない。
だから、cp932を扱えるアプリがcp932でレジストリ(UTF-16)に書き込んでも
適切に変換が行われるし、そのアプリがUTF-8を使えるなら、それもレジストリに書き込んでも壊れたりしない。
例えばアプリ(cp932)から レジストリ(UTF-16)に書き込んで、
レジストリ(UTF-16)を アプリ(UTF-8)から参照することは問題なくできるということ
688(1): 2019/11/26(火)16:32 ID:9NQ9wJPH(3/10) AAS
>>685
非対応じゃ無くWとAはちゃんと使い分けがなされてるんだよ
オーバーロード関数なら引数がWCHAR *がCHAR *で問題なく動く
そこにUTF-8とかねじ込まれても困るわ
689: 2019/11/26(火)16:32 ID:H048FZbZ(5/11) AAS
もちろんレジストリ(UTF-16)をアプリ(cp932)で参照したときは扱えない文字列があるが、
それはファイル名(UTF-16)をアプリ(cp932)で扱えない文字があるという程度の話でしか無い。
690(1): 2019/11/26(火)16:35 ID:ogXaluX+(3/4) AAS
マルチバイト文字を含むファイルパスが鬼門でしょ。
691(1): 2019/11/26(火)16:38 ID:H048FZbZ(6/11) AAS
>>688
お前は意味がわかるように書き込め
> 非対応じゃ無くWとAはちゃんと使い分けがなされてるんだよ
どういう使い分けがされてるのか書け
> オーバーロード関数なら引数がWCHAR *がCHAR *で問題なく動く
それって引数がWCHAR *ならW系が使われて、引数がCHAR *ならA系が使われるってだけだろ
> そこにUTF-8とかねじ込まれても困るわ
そこにってどこよ?何が困るんだよ。
UTF-8はCHAR*を使うって理解してるか?
今までA系はASCIIだけでなくSJISや多数の文字コードで使われていたというのに
省1
692: 2019/11/26(火)16:41 ID:H048FZbZ(7/11) AAS
>>690
鬼門っていうか、単にUnicode非対応のアプリは
想定しているコードページに変換できない文字を扱えないってだけだけどな
たったこれだけのことなのに何をグダグダ言ってるのかわからん
上下前次1-新書関写板覧索設栞歴
あと 310 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.012s