Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build124
http://mevius.5ch.net/test/read.cgi/tech/1510395780/
Win32API質問箱 Build123
http://mevius.2ch.net/test/read.cgi/tech/1475897582/
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build121
http://echo.2ch.net/test/read.cgi/tech/1438695290/
Win32API質問箱 Build120
http://echo.2ch.net/test/read.cgi/tech/1428570962/
■関連スレ
Visual Studio 2019
http://mevius.5ch.net/test/read.cgi/tech/1548765663/
Visual Studio 2017 Part6
http://mevius.5ch.net/test/read.cgi/tech/1528645068/
【C++】 DirectX初心者質問スレ Part41 【C】
http://mevius.5ch.net/test/read.cgi/tech/1521786252/
探検
Win32API質問箱 Build125
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/02/27(水) 15:09:08.64ID:6ExXwgQU672デフォルトの名無しさん
2019/11/26(火) 14:46:41.11ID:LSm6MssX プロファイル壊されるってゆーてるリンクの連中だけが情報量ゼロなの草
673デフォルトの名無しさん
2019/11/26(火) 14:53:48.35ID:hqQvrruW 結局W系で作るしかないんだから余計なことは考えなくていいよ
674デフォルトの名無しさん
2019/11/26(火) 14:54:37.98ID:ogXaluX+ fopen()の振る舞いで困るかも。Win32のfopen()はutf8を特別扱いするから。
675デフォルトの名無しさん
2019/11/26(火) 14:56:55.82ID:dAEqoOXB レジストリの読み書きも気になるな
676デフォルトの名無しさん
2019/11/26(火) 15:01:36.94ID:JyI6kWkc677蟻人間 ◆T6xkBnTXz7B0
2019/11/26(火) 15:25:37.49ID:SWHzOLKZ MultiByteToWideChar/WideCharToMultiByteの第一引数にシフトJISコードページ932を指定しないといけないらしい。CP_ACPだと死ぬ。
678デフォルトの名無しさん
2019/11/26(火) 15:33:53.01ID:Yz+apKYY679蟻人間 ◆T6xkBnTXz7B0
2019/11/26(火) 15:37:00.29ID:SWHzOLKZ シフトJISテキストファイルにUTF-8テキストが混ざったら、そりゃ文字化けするでしょう。
680デフォルトの名無しさん
2019/11/26(火) 15:56:07.44ID:9NQ9wJPH681デフォルトの名無しさん
2019/11/26(火) 16:01:44.16ID:Yz+apKYY コードページを変えると文字化けするだろうね
それだけの話。別に動かなくなるわけじゃない。
コードページをもとに戻せば動く
壊れたデータは直せばいいだけ
それだけの話。別に動かなくなるわけじゃない。
コードページをもとに戻せば動く
壊れたデータは直せばいいだけ
682デフォルトの名無しさん
2019/11/26(火) 16:02:07.57ID:ogXaluX+ main()に渡される引数文字列argvどうなります?
683デフォルトの名無しさん
2019/11/26(火) 16:23:03.19ID:9NQ9wJPH 自前で先行バイト検出しながら文字列書き換えるような関数とか如何すんのよ
684デフォルトの名無しさん
2019/11/26(火) 16:23:44.61ID:H048FZbZ >>682
Unicode非対応アプリのmainだとして、
Unicode対応アプリ(からUnicode APIを使って)呼び出せば、引数全てがUTF-16からUTF-8に変換されてから
呼び出される。Unicode非対応アプリから呼び出せば、渡した文字列(バイト列)がそのまま渡される。
そこは今までと変わらない。今までもUnicode対応アプリから呼び出せば、設定されたコードページ(例えばcp932)に
変換されて呼び出される。違いはUTF-16からUTF-8だと変換できない文字がないので文字化けは一切発生しない。
なお、渡されたからと言ってアプリが正しくその文字列を扱えるかどうかは別の話
結局の所cp932専用で作られたアプリは完全に同じようには動かない。(ASCIIの範囲でなら問題ないだろう)
Unicode非対応アプリのmainだとして、
Unicode対応アプリ(からUnicode APIを使って)呼び出せば、引数全てがUTF-16からUTF-8に変換されてから
呼び出される。Unicode非対応アプリから呼び出せば、渡した文字列(バイト列)がそのまま渡される。
そこは今までと変わらない。今までもUnicode対応アプリから呼び出せば、設定されたコードページ(例えばcp932)に
変換されて呼び出される。違いはUTF-16からUTF-8だと変換できない文字がないので文字化けは一切発生しない。
なお、渡されたからと言ってアプリが正しくその文字列を扱えるかどうかは別の話
結局の所cp932専用で作られたアプリは完全に同じようには動かない。(ASCIIの範囲でなら問題ないだろう)
685デフォルトの名無しさん
2019/11/26(火) 16:25:08.09ID:H048FZbZ686デフォルトの名無しさん
2019/11/26(火) 16:25:51.97ID:H048FZbZ あと、システムプロファイルとか意味不明。
何の話をしてるのかわからないレベル。
何の話をしてるのかわからないレベル。
687デフォルトの名無しさん
2019/11/26(火) 16:30:59.10ID:H048FZbZ ちなみにUnicodeから非Unicodeへの変換は変換できない文字があるから一部文字化けするが、
非UnicodeからUnicodeへの変換では文字化けすることはない。
だから、cp932を扱えるアプリがcp932でレジストリ(UTF-16)に書き込んでも
適切に変換が行われるし、そのアプリがUTF-8を使えるなら、それもレジストリに書き込んでも壊れたりしない。
例えばアプリ(cp932)から レジストリ(UTF-16)に書き込んで、
レジストリ(UTF-16)を アプリ(UTF-8)から参照することは問題なくできるということ
非UnicodeからUnicodeへの変換では文字化けすることはない。
だから、cp932を扱えるアプリがcp932でレジストリ(UTF-16)に書き込んでも
適切に変換が行われるし、そのアプリがUTF-8を使えるなら、それもレジストリに書き込んでも壊れたりしない。
例えばアプリ(cp932)から レジストリ(UTF-16)に書き込んで、
レジストリ(UTF-16)を アプリ(UTF-8)から参照することは問題なくできるということ
688デフォルトの名無しさん
2019/11/26(火) 16:32:48.14ID:9NQ9wJPH689デフォルトの名無しさん
2019/11/26(火) 16:32:49.98ID:H048FZbZ もちろんレジストリ(UTF-16)をアプリ(cp932)で参照したときは扱えない文字列があるが、
それはファイル名(UTF-16)をアプリ(cp932)で扱えない文字があるという程度の話でしか無い。
それはファイル名(UTF-16)をアプリ(cp932)で扱えない文字があるという程度の話でしか無い。
690デフォルトの名無しさん
2019/11/26(火) 16:35:04.40ID:ogXaluX+ マルチバイト文字を含むファイルパスが鬼門でしょ。
691デフォルトの名無しさん
2019/11/26(火) 16:38:45.15ID:H048FZbZ >>688
お前は意味がわかるように書き込め
> 非対応じゃ無くWとAはちゃんと使い分けがなされてるんだよ
どういう使い分けがされてるのか書け
> オーバーロード関数なら引数がWCHAR *がCHAR *で問題なく動く
それって引数がWCHAR *ならW系が使われて、引数がCHAR *ならA系が使われるってだけだろ
> そこにUTF-8とかねじ込まれても困るわ
そこにってどこよ?何が困るんだよ。
UTF-8はCHAR*を使うって理解してるか?
今までA系はASCIIだけでなくSJISや多数の文字コードで使われていたというのに
UTF-8が増えたごときで何も困らんだろ
お前は意味がわかるように書き込め
> 非対応じゃ無くWとAはちゃんと使い分けがなされてるんだよ
どういう使い分けがされてるのか書け
> オーバーロード関数なら引数がWCHAR *がCHAR *で問題なく動く
それって引数がWCHAR *ならW系が使われて、引数がCHAR *ならA系が使われるってだけだろ
> そこにUTF-8とかねじ込まれても困るわ
そこにってどこよ?何が困るんだよ。
UTF-8はCHAR*を使うって理解してるか?
今までA系はASCIIだけでなくSJISや多数の文字コードで使われていたというのに
UTF-8が増えたごときで何も困らんだろ
692デフォルトの名無しさん
2019/11/26(火) 16:41:18.53ID:H048FZbZ693デフォルトの名無しさん
2019/11/26(火) 16:56:51.07ID:ogXaluX+ バッチファイルは厄介。あればだが。
694デフォルトの名無しさん
2019/11/26(火) 16:59:13.07ID:JyI6kWkc >>684
UTF8アプリなんて存在するんだっけ?
UTF8アプリなんて存在するんだっけ?
695デフォルトの名無しさん
2019/11/26(火) 17:02:23.79ID:9NQ9wJPH >>691
たとえUnicodeに対応しているプログラムであっても何らかの出力ファイルをSJISで出力するような構造だと、
それを勝手にUTF-8に書き換えられたら次読み込んだ時滅茶苦茶になるだろ
一般的なテキストエディタも勝手に文字コード変えるような事はせんからな
たとえUnicodeに対応しているプログラムであっても何らかの出力ファイルをSJISで出力するような構造だと、
それを勝手にUTF-8に書き換えられたら次読み込んだ時滅茶苦茶になるだろ
一般的なテキストエディタも勝手に文字コード変えるような事はせんからな
696デフォルトの名無しさん
2019/11/26(火) 17:12:43.83ID:H048FZbZ >>694
まずないだろうね。作れるようになったのは最近だし。
念ために言っておくけど、ないっていうのは
Unicode対応アプリではない(=A系APIを使う)かつASCII文字としてUTF-8を使うアプリのことね。
UTF-8はUnicodeだろというツッコミはいらん。
WindowsにおいてUnicode対応とはUTF-16アプリのこと
最近Unicode非対応の古いアプリでもUTF-8が使えるようになったから、
古いアプリをUTF-8用として作り直して新しくすることでA系のまま
Unicode対応にできるとかいうジョークのような話w
それするぐらいなら最初からUnicode対応として.NETとかで作りますわ。
完全に将来のLinuxアプリなどの移植用。多分最終的にマニフェストとかで
このアプリはUTF-8アプリですって指定できるようになるんじゃない?
まずないだろうね。作れるようになったのは最近だし。
念ために言っておくけど、ないっていうのは
Unicode対応アプリではない(=A系APIを使う)かつASCII文字としてUTF-8を使うアプリのことね。
UTF-8はUnicodeだろというツッコミはいらん。
WindowsにおいてUnicode対応とはUTF-16アプリのこと
最近Unicode非対応の古いアプリでもUTF-8が使えるようになったから、
古いアプリをUTF-8用として作り直して新しくすることでA系のまま
Unicode対応にできるとかいうジョークのような話w
それするぐらいなら最初からUnicode対応として.NETとかで作りますわ。
完全に将来のLinuxアプリなどの移植用。多分最終的にマニフェストとかで
このアプリはUTF-8アプリですって指定できるようになるんじゃない?
697デフォルトの名無しさん
2019/11/26(火) 17:13:45.02ID:H048FZbZ698デフォルトの名無しさん
2019/11/26(火) 17:14:18.74ID:H048FZbZ 結論を書け結論を。お前がいいたいこが何かを書け。
699デフォルトの名無しさん
2019/11/26(火) 17:16:25.46ID:9NQ9wJPH700デフォルトの名無しさん
2019/11/26(火) 17:44:52.60ID:H048FZbZ >>698
勝手に変えてない。お前は馬鹿なのか?
勝手に変えてない。お前は馬鹿なのか?
701デフォルトの名無しさん
2019/11/26(火) 17:48:56.90ID:FXTOqUMb クッソ伸びてて草
MBSCなソフトがA系APIでデータ読み書きしてたら非対応のUTF8に書き換わってて、
以降データが文字化けしたまま困ることになるんだから、元に戻せばOKとか非対応なんだから
仕方ないとか、こればかりは擁護不可能の的外れ
表示だけの問題じゃなく記録データにも影響があって、こいつばかりは復元ソフトでも組まないと戻せない
MBSCなソフトは使えないだけならば、単純にA系APIを廃止すればいいだけなんだが
MSはお節介にもどうにかして過去資産を活かしてやろうってことでA系の挙動を変える選択肢を
用意したって点だけ見ても、単純に非対応とか元に戻せばいいというような話ではない
年末にお父ちゃんから、古い宛名印刷ソフトのデータが壊れたって連絡が来るかも知れないくらいには、
時と場合によっては取り返しが付かない
今のところデフォでこの切り替えは無効だが、将来もしかしたら〜というのが現時点でのキモだろう
MBSCなソフトがA系APIでデータ読み書きしてたら非対応のUTF8に書き換わってて、
以降データが文字化けしたまま困ることになるんだから、元に戻せばOKとか非対応なんだから
仕方ないとか、こればかりは擁護不可能の的外れ
表示だけの問題じゃなく記録データにも影響があって、こいつばかりは復元ソフトでも組まないと戻せない
MBSCなソフトは使えないだけならば、単純にA系APIを廃止すればいいだけなんだが
MSはお節介にもどうにかして過去資産を活かしてやろうってことでA系の挙動を変える選択肢を
用意したって点だけ見ても、単純に非対応とか元に戻せばいいというような話ではない
年末にお父ちゃんから、古い宛名印刷ソフトのデータが壊れたって連絡が来るかも知れないくらいには、
時と場合によっては取り返しが付かない
今のところデフォでこの切り替えは無効だが、将来もしかしたら〜というのが現時点でのキモだろう
702デフォルトの名無しさん
2019/11/26(火) 17:59:10.05ID:4DbW4sNm703デフォルトの名無しさん
2019/11/26(火) 18:00:34.44ID:4DbW4sNm704デフォルトの名無しさん
2019/11/26(火) 18:02:42.72ID:4DbW4sNm もしかしてこいつは、ユーザーが設定変更しなくても
アップデートで勝手にUTF-8に変わるとか思ってるのか?
ならものすごくマヌケだw
アップデートで勝手にUTF-8に変わるとか思ってるのか?
ならものすごくマヌケだw
705デフォルトの名無しさん
2019/11/26(火) 18:12:52.84ID:FXTOqUMb あー、アホが一人混じってるから伸びてるのか
把握
把握
706デフォルトの名無しさん
2019/11/26(火) 18:18:38.91ID:4DbW4sNm 今度はレスしなかったところを見ると図星だったか
707デフォルトの名無しさん
2019/11/26(火) 18:39:40.59ID:9NQ9wJPH708デフォルトの名無しさん
2019/11/26(火) 18:49:29.78ID:4DbW4sNm 本当にアホだったな。ユーザーが意図的に変えない限り変わらないってのに
709デフォルトの名無しさん
2019/11/26(火) 18:55:32.97ID:FXTOqUMb710デフォルトの名無しさん
2019/11/26(火) 18:55:56.87ID:4DbW4sNm しかもエアプなんだろうな。
>>638は古い情報で、
そもそも「ベータ: ワールドワイド言語サポートで Unicode UTF-8 を使用」の設定と
『メモ帳の文字コードと全く関係ない』話だってのもわかってないんだろう
『当時』はたまたまそこの設定がデフォルトになっていただけで、
今は常にUTF-8(BOMなし)
メモ帳は古いアプリでもなんでも無いしな
で、メモ帳が保存するテキストファイルの文字コードと
古いアプリの挙動も全く関係ない話。そんなの考えるまでもなくわかること
こいつずっとテキストファイルのデフォルトの文字コードと
APIの話をごっちゃにしてたのかよ
完全に素人だ
>>638は古い情報で、
そもそも「ベータ: ワールドワイド言語サポートで Unicode UTF-8 を使用」の設定と
『メモ帳の文字コードと全く関係ない』話だってのもわかってないんだろう
『当時』はたまたまそこの設定がデフォルトになっていただけで、
今は常にUTF-8(BOMなし)
メモ帳は古いアプリでもなんでも無いしな
で、メモ帳が保存するテキストファイルの文字コードと
古いアプリの挙動も全く関係ない話。そんなの考えるまでもなくわかること
こいつずっとテキストファイルのデフォルトの文字コードと
APIの話をごっちゃにしてたのかよ
完全に素人だ
711デフォルトの名無しさん
2019/11/26(火) 18:58:15.43ID:9NQ9wJPH712デフォルトの名無しさん
2019/11/26(火) 18:58:43.20ID:4DbW4sNm713デフォルトの名無しさん
2019/11/26(火) 19:05:03.16ID:4pvDP8OD はい、論点誤魔化してきたね
未だに文字化けする程度の認識しかしてないから、話するだけ無駄だと思うよ
メモ帳とか連呼の定義とか持ちだしてきてもう意味不明
そもそもWinAPIのプログラムも組んだことないの丸わかりだから、キチガイに付き合うだけ損
未だに文字化けする程度の認識しかしてないから、話するだけ無駄だと思うよ
メモ帳とか連呼の定義とか持ちだしてきてもう意味不明
そもそもWinAPIのプログラムも組んだことないの丸わかりだから、キチガイに付き合うだけ損
714デフォルトの名無しさん
2019/11/26(火) 19:05:29.42ID:dbvsSdaZ 例えば標準入力から文字列を受け取ってテキストファイルに追加書き込みする実行ファイル
そんなの使ってたら、ファイル前半はシフトJIS、後半はUTF8になって、どっちでも読めなくなる
これは極端な例だけど同じようなことはそこら中で起こりえる
そんなの使ってたら、ファイル前半はシフトJIS、後半はUTF8になって、どっちでも読めなくなる
これは極端な例だけど同じようなことはそこら中で起こりえる
715デフォルトの名無しさん
2019/11/26(火) 19:05:45.18ID:FXTOqUMb メモ帳・・・・?
ヤベえなこいつ
ヤベえなこいつ
716デフォルトの名無しさん
2019/11/26(火) 19:09:39.48ID:s8aO6zrT だんだん論点ずれてきてるやん
717デフォルトの名無しさん
2019/11/26(火) 19:09:52.88ID:4pvDP8OD718デフォルトの名無しさん
2019/11/26(火) 19:11:27.01ID:4DbW4sNm はぁ、リンク先も読んでないのかよ
>>638のリンク先読めよ・・・
https://twitter.com/MurakamiShinyu/status/994781934407553024
> 今までデフォルトでShift JISだったもの(メモ帳をはじめ…)が
> この設定をすると「メモ帳」の「名前を付けて保存」で「文字コード: ANSI」
> (デフォルト)だとBOM無しのUTF-8、「文字コード: UTF-8」だと
> BOM付きのUTF-8のファイルになります。
↑注意 これは古い話で今は当てはまらない
https://twitter.com/5chan_nel (5ch newer account)
>>638のリンク先読めよ・・・
https://twitter.com/MurakamiShinyu/status/994781934407553024
> 今までデフォルトでShift JISだったもの(メモ帳をはじめ…)が
> この設定をすると「メモ帳」の「名前を付けて保存」で「文字コード: ANSI」
> (デフォルト)だとBOM無しのUTF-8、「文字コード: UTF-8」だと
> BOM付きのUTF-8のファイルになります。
↑注意 これは古い話で今は当てはまらない
https://twitter.com/5chan_nel (5ch newer account)
719デフォルトの名無しさん
2019/11/26(火) 19:12:17.71ID:4DbW4sNm720デフォルトの名無しさん
2019/11/26(火) 19:17:08.27ID:4DbW4sNm ちなみに
> 標準入力から文字列を受け取ってテキストファイルに追加書き込みする実行ファイル
これはコードページとは何の関係もない。
当たり前だがSJISで出力してるアプリは、
コードページをどう変更しようが、SJISで出力される。
「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」に
チェックを入れたところで、SJISで出力してるアプリが
UTF-8で出力するように変わることはない。
> 標準入力から文字列を受け取ってテキストファイルに追加書き込みする実行ファイル
これはコードページとは何の関係もない。
当たり前だがSJISで出力してるアプリは、
コードページをどう変更しようが、SJISで出力される。
「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」に
チェックを入れたところで、SJISで出力してるアプリが
UTF-8で出力するように変わることはない。
721デフォルトの名無しさん
2019/11/26(火) 19:18:48.31ID:9NQ9wJPH 設定変更しなければ良い、ってのは利用者の目線で開発者の発想ではないわな
>>658
>A系アプリってなんだ? A系っていうのはWindows APIのAPIの末尾のAだろ
>Windows APIの話なんだからWindowsの話だろ?
win32api には同じ api 関数に対して A 系と W 系の二つの異なった関数が準備されているんです
A 系の A は ansi の A で、こいつは主にファイルパスに Shift-JIS/cp932 を使うのに対して W 系はファイルパスに utf-16LE を使います
>A系アプリってなんだ? A系っていうのはWindows APIのAPIの末尾のAだろ
>Windows APIの話なんだからWindowsの話だろ?
win32api には同じ api 関数に対して A 系と W 系の二つの異なった関数が準備されているんです
A 系の A は ansi の A で、こいつは主にファイルパスに Shift-JIS/cp932 を使うのに対して W 系はファイルパスに utf-16LE を使います
>>674
win32api に fopen は存在しません、CreateHandle ならば存在しますが
win32api に fopen は存在しません、CreateHandle ならば存在しますが
724デフォルトの名無しさん
2019/11/26(火) 19:21:22.69ID:4DbW4sNm もちろん、「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」
の設定(コードページ)を見て、アプリ内部でその文字コードに変換して
出力するように作られてるアプリは別な。
あくまでA系APIを使ってるアプリの話
SJIS前提で作られてるアプリは、SJISでしか出力しません。
ただしAPIがUTF-8前提として処理するのでASCII以外だと
出力がおかしくなります。
の設定(コードページ)を見て、アプリ内部でその文字コードに変換して
出力するように作られてるアプリは別な。
あくまでA系APIを使ってるアプリの話
SJIS前提で作られてるアプリは、SJISでしか出力しません。
ただしAPIがUTF-8前提として処理するのでASCII以外だと
出力がおかしくなります。
725デフォルトの名無しさん
2019/11/26(火) 19:22:46.52ID:4DbW4sNm >>722
> A 系の A は ansi の A で、こいつは主にファイルパスに Shift-JIS/cp932 を使うのに対して W 系はファイルパスに utf-16LE を使います
うんしってる。そして新設された「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」
というのは、A系を使ってASCII互換のUTF-8を使えるようになる機能です。
> A 系の A は ansi の A で、こいつは主にファイルパスに Shift-JIS/cp932 を使うのに対して W 系はファイルパスに utf-16LE を使います
うんしってる。そして新設された「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」
というのは、A系を使ってASCII互換のUTF-8を使えるようになる機能です。
>>725
thanks!
thanks!
728デフォルトの名無しさん
2019/11/26(火) 19:25:39.71ID:4pvDP8OD >>718
>>648読んでる?
> すべての A 系 API が UTF-8 を I/O するようになるスイッチやぞ。半端ねぇぞ。
>>719
> その話は当たり前で、LinuxでもmacOSでも同じことになると
> さんざん言ってる
今回のWinの設定がなんで他のOSを例に挙げるの?しかもWin32APIの話なのに、どういう関係があるのか?
>>720
> 当たり前だがSJISで出力してるアプリは、
> コードページをどう変更しようが、SJISで出力される。
君は、
> すべての A 系 API が UTF-8 を I/O するようになるスイッチやぞ。半端ねぇぞ。
これ自体がウソだって言ってるんだね?
ダラダラ連投せずに、そう書けば?
>>648読んでる?
> すべての A 系 API が UTF-8 を I/O するようになるスイッチやぞ。半端ねぇぞ。
>>719
> その話は当たり前で、LinuxでもmacOSでも同じことになると
> さんざん言ってる
今回のWinの設定がなんで他のOSを例に挙げるの?しかもWin32APIの話なのに、どういう関係があるのか?
>>720
> 当たり前だがSJISで出力してるアプリは、
> コードページをどう変更しようが、SJISで出力される。
君は、
> すべての A 系 API が UTF-8 を I/O するようになるスイッチやぞ。半端ねぇぞ。
これ自体がウソだって言ってるんだね?
ダラダラ連投せずに、そう書けば?
729デフォルトの名無しさん
2019/11/26(火) 19:26:51.40ID:4DbW4sNm >>728
> 今回のWinの設定がなんで他のOSを例に挙げるの?しかもWin32APIの話なのに、どういう関係があるのか?
だから他のOSでも起きる、SJISのファイルにUTF-8で書き込むと壊れるという話を
ごちゃまぜにするなと言ってる。
それはWin32APIと関係ない話だと言ってるだけ
> 今回のWinの設定がなんで他のOSを例に挙げるの?しかもWin32APIの話なのに、どういう関係があるのか?
だから他のOSでも起きる、SJISのファイルにUTF-8で書き込むと壊れるという話を
ごちゃまぜにするなと言ってる。
それはWin32APIと関係ない話だと言ってるだけ
730デフォルトの名無しさん
2019/11/26(火) 19:32:03.78ID:4pvDP8OD >>729
> SJISのファイルにUTF-8で書き込むと壊れるという話を
なぜそのようなことが起こるのか、どういうきっかけで起こるのか、影響範囲はどうなっているのか、
A系APIの挙動が変わるからだ
という話なだけでしょうが
他のOSを例に出す意味がない
君の主張は、APIの挙動は変わらないということなんだね?
要点をまとめなよ
> SJISのファイルにUTF-8で書き込むと壊れるという話を
なぜそのようなことが起こるのか、どういうきっかけで起こるのか、影響範囲はどうなっているのか、
A系APIの挙動が変わるからだ
という話なだけでしょうが
他のOSを例に出す意味がない
君の主張は、APIの挙動は変わらないということなんだね?
要点をまとめなよ
731デフォルトの名無しさん
2019/11/26(火) 19:36:44.09ID:4DbW4sNm >>728
> すべての A 系 API が UTF-8 を I/O するようになるスイッチやぞ。半端ねぇぞ。
「ダウト」なのの1つ目は「半端ねぇ」の部分。
A系APIは昔から、コードページの設定をみてそのコードページの文字コードを
前提として処理している。昔から当たり前のことで今更驚くことじゃない。
英語ならASCIIを前提として処理するし、日本語に設定すればSJISを前提として
処理するするようになるし、韓国語や中国語にすれば、その国文字コードを前提して処理する。
20年以上そういう機能だった。
そしてもう一つはI/Oするって所。APIが設定に応じた文字コードを前提とするだけで別にI/Oするわけじゃない。
どの文字コードを使うかはアプリによる。SJIS専用のアプリはSJISしかI/Oしない。
UTF-8を前提としてる状態でSJISを流すとおかしくなるというだけで、
それらのAPIがUTF-8でI/Oするように変わるわけじゃない。
(エラーメッセージとかはSJISのリソースを使うようになるが、
これはAPIが変換してるわけじゃなくコードページに応じたリソースに変えてるだけ)
> すべての A 系 API が UTF-8 を I/O するようになるスイッチやぞ。半端ねぇぞ。
「ダウト」なのの1つ目は「半端ねぇ」の部分。
A系APIは昔から、コードページの設定をみてそのコードページの文字コードを
前提として処理している。昔から当たり前のことで今更驚くことじゃない。
英語ならASCIIを前提として処理するし、日本語に設定すればSJISを前提として
処理するするようになるし、韓国語や中国語にすれば、その国文字コードを前提して処理する。
20年以上そういう機能だった。
そしてもう一つはI/Oするって所。APIが設定に応じた文字コードを前提とするだけで別にI/Oするわけじゃない。
どの文字コードを使うかはアプリによる。SJIS専用のアプリはSJISしかI/Oしない。
UTF-8を前提としてる状態でSJISを流すとおかしくなるというだけで、
それらのAPIがUTF-8でI/Oするように変わるわけじゃない。
(エラーメッセージとかはSJISのリソースを使うようになるが、
これはAPIが変換してるわけじゃなくコードページに応じたリソースに変えてるだけ)
732デフォルトの名無しさん
2019/11/26(火) 19:40:06.72ID:4DbW4sNm >>730
要点 「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」の設定によるAPIの挙動と
アプリが入出力する文字コード(ファイル等を含む)は関係は一切ない
アプリが入出力する文字コードはアプリの実装によって決まる。
(Win32 APIと関係ないから、他のOSも同じという話につながる)
要点 「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用」の設定によるAPIの挙動と
アプリが入出力する文字コード(ファイル等を含む)は関係は一切ない
アプリが入出力する文字コードはアプリの実装によって決まる。
(Win32 APIと関係ないから、他のOSも同じという話につながる)
733デフォルトの名無しさん
2019/11/26(火) 20:15:32.91ID:9NQ9wJPH APIの挙動変るのはやっぱヤベーな
iniから文字列を取り出す >UTF-8
今まで通りSJISだと決めてかかって独自関数でパスの分解などをすると滅茶苦茶になるって話やん
これを利用したディレクトリトラバーサルとかも可能なんじゃね?
iniから文字列を取り出す >UTF-8
今まで通りSJISだと決めてかかって独自関数でパスの分解などをすると滅茶苦茶になるって話やん
これを利用したディレクトリトラバーサルとかも可能なんじゃね?
734デフォルトの名無しさん
2019/11/26(火) 21:07:20.59ID:Qm31cF9G まずは公式ドキュメントを読め
話はそれからだ
Visual C++ のテキストと文字列
https://docs.microsoft.com/ja-jp/cpp/text/text-and-strings-in-visual-cpp
話はそれからだ
Visual C++ のテキストと文字列
https://docs.microsoft.com/ja-jp/cpp/text/text-and-strings-in-visual-cpp
>>734
VC のドキュメントがなんの役に立つ?
VC のドキュメントがなんの役に立つ?
736デフォルトの名無しさん
2019/11/26(火) 22:34:01.39ID:JUtzLycC 他のソースはないかな。
βとはいえMSが単なるロケールの追加じゃなくてそんな過激なスイッチを導入しようとする意図がよくわからん。
βとはいえMSが単なるロケールの追加じゃなくてそんな過激なスイッチを導入しようとする意図がよくわからん。
737デフォルトの名無しさん
2019/11/26(火) 23:00:16.55ID:dbvsSdaZ 英語圏だと切り替えても英語入出力だけするなら何も変わらないしメリットの方が多い
日本語圏じゃデメリットしかないがw
日本語圏じゃデメリットしかないがw
738デフォルトの名無しさん
2019/11/26(火) 23:01:00.12ID:JyI6kWkc >>719
> その話は当たり前で、
本当?
SJISアプリをUTF-8アプリとして動作させるんだぜ?
printf("あほまぬけ\n"); こんなアプリがあったときに、
設定前と設定後で出てくる文字コードが違うんだぜ?
Linuxでそんなことが起こるかよ。
> その話は当たり前で、
本当?
SJISアプリをUTF-8アプリとして動作させるんだぜ?
printf("あほまぬけ\n"); こんなアプリがあったときに、
設定前と設定後で出てくる文字コードが違うんだぜ?
Linuxでそんなことが起こるかよ。
739デフォルトの名無しさん
2019/11/26(火) 23:03:08.88ID:JyI6kWkc740デフォルトの名無しさん
2019/11/26(火) 23:32:37.50ID:9NQ9wJPH _tcsincなんかマルチバイト前提にしか使わないような関数だろ
どんな挙動になるんだ
どんな挙動になるんだ
741デフォルトの名無しさん
2019/11/26(火) 23:33:44.60ID:4vHYq+aK 「ワールドワイド言語サポートで Unicode UTF-8 を使用」にチェックを入れ
なければUnicode非対応のアプリは従来通り動くし、これにチェックを入れな
ければ動かない既存のアプリっていうのも現状では無いんでしょう?
非対応アプリを対応させるのに要するコスト以上の利益が今後見込めるなら
アプリ開発元も対応させるだろうけど、そうでないなら放置されるんじゃ
ないかなあ。
MSがUnicode非対応アプリを切り捨てるようなことをすれば、Windows離れ
(=パソコン離れ)が進むだけでしょ。
なければUnicode非対応のアプリは従来通り動くし、これにチェックを入れな
ければ動かない既存のアプリっていうのも現状では無いんでしょう?
非対応アプリを対応させるのに要するコスト以上の利益が今後見込めるなら
アプリ開発元も対応させるだろうけど、そうでないなら放置されるんじゃ
ないかなあ。
MSがUnicode非対応アプリを切り捨てるようなことをすれば、Windows離れ
(=パソコン離れ)が進むだけでしょ。
742デフォルトの名無しさん
2019/11/26(火) 23:36:26.55ID:JUtzLycC CP1252のアプリにUTF8突っ込まれてもやっぱり困るだけだよなぁ。
743デフォルトの名無しさん
2019/11/26(火) 23:40:34.75ID:oARfCEQj いきなりなんとかアプリで括るから話が噛み合ってないのでは?
まず確認すべきなのはAPIの挙動がどう変わるのかで、
次に典型的なsjisアプリでAPIをどう使っているのか
だから影響はこうだみたいな
誰か整理して教えて
まず確認すべきなのはAPIの挙動がどう変わるのかで、
次に典型的なsjisアプリでAPIをどう使っているのか
だから影響はこうだみたいな
誰か整理して教えて
744デフォルトの名無しさん
2019/11/26(火) 23:43:29.50ID:dbvsSdaZ745デフォルトの名無しさん
2019/11/26(火) 23:56:56.29ID:4pvDP8OD >>731
こちらの論拠は全てこのツイートにあるしこれベースで話していたわけで、
最初から君の主張がそれなら話が早かったんだけどね
端からAPI関係ないと言われても話が通じず意味不明にしか思わない
しかしはっきり言って、どっちも信用ならんw
自分でテストするしかないわもう
こちらの論拠は全てこのツイートにあるしこれベースで話していたわけで、
最初から君の主張がそれなら話が早かったんだけどね
端からAPI関係ないと言われても話が通じず意味不明にしか思わない
しかしはっきり言って、どっちも信用ならんw
自分でテストするしかないわもう
746デフォルトの名無しさん
2019/11/26(火) 23:58:07.39ID:JUtzLycC ググってみて気付いたが一年以上前の話題なのね、これ。
747デフォルトの名無しさん
2019/11/27(水) 03:15:27.83ID:j6pNPBz/ >>738
> 設定前と設定後で出てくる文字コードが違うんだぜ?
違うという証拠は?
printf("あほまぬけ\n"); と書いてコンパイルしたとき
\0で終わるSJISのバイト列が格納されてるに過ぎない。
それが設定で変わるわけ無いだろ。
> 設定前と設定後で出てくる文字コードが違うんだぜ?
違うという証拠は?
printf("あほまぬけ\n"); と書いてコンパイルしたとき
\0で終わるSJISのバイト列が格納されてるに過ぎない。
それが設定で変わるわけ無いだろ。
748デフォルトの名無しさん
2019/11/27(水) 03:32:29.18ID:j6pNPBz/ >>733
> APIの挙動変るのはやっぱヤベーな
それは英語圏のASCII前提で作られているアプリでSJISを使うと
\(0x5c)が含まれる「表」などで誤動作するって話と同じこと
http://www.kent-web.com/pubc/garble.html
> 今まで通りSJISだと決めてかかって独自関数でパスの分解などをすると滅茶苦茶になるって話やん
> これを利用したディレクトリトラバーサルとかも可能なんじゃね?
UTF-8は文字の一部にASCIIコードが含まれることはないのでそのようなことは発生しない。
というかそもそもが「英語圏で作られた日本語などを扱えないUnixアプリ」でこのような問題が
起きないように考慮されて作られたのがUTF-8だから
> APIの挙動変るのはやっぱヤベーな
それは英語圏のASCII前提で作られているアプリでSJISを使うと
\(0x5c)が含まれる「表」などで誤動作するって話と同じこと
http://www.kent-web.com/pubc/garble.html
> 今まで通りSJISだと決めてかかって独自関数でパスの分解などをすると滅茶苦茶になるって話やん
> これを利用したディレクトリトラバーサルとかも可能なんじゃね?
UTF-8は文字の一部にASCIIコードが含まれることはないのでそのようなことは発生しない。
というかそもそもが「英語圏で作られた日本語などを扱えないUnixアプリ」でこのような問題が
起きないように考慮されて作られたのがUTF-8だから
749デフォルトの名無しさん
2019/11/27(水) 03:36:29.35ID:h6Shw8l2 >>747
A系のAPIがUTF-8に変換されるってのは、そういうことだろう?
A系のAPIがUTF-8に変換されるってのは、そういうことだろう?
750デフォルトの名無しさん
2019/11/27(水) 03:37:49.05ID:h6Shw8l2751デフォルトの名無しさん
2019/11/27(水) 03:56:45.13ID:j6pNPBz/ >>743
> まず確認すべきなのはAPIの挙動がどう変わるのかで、
WindowsはUTF-16。ファイル名などOSから文字列を受け取るときに
A系APIを使うとシステムロケールの設定で設定された文字コードに変換されて渡される。
またOSに渡すときはUTF-16に変換される。
これは標準入出力やファイルに出力するときには全く関係ない。
SJIS前提のアプリがSJISで出力するとき(つまりA系APIのみを使ってる)
変換は一切されない。SJISで出力される。
Unicodeに変換されるのはアプリが_setmode等を使ってファイルハンドルを
Unicode出力モードに意図的に変更した場合。(OSのシステムロケールの設定で勝手に変わるのではない)
そしてこの話はUnicode出力する話で、今はSJISで出力するアプリの話をしてるのだから関係ない。
SJISで出力するアプリはシステムロケールの設定が英語だろうがUTF-8だろうが常にSJISで出力される。
だから英語モードのコマンドプロンプトはSJISを理解できないから文字化けする。
chcpでコードページを932にすると「Unicode出力モードではない出力」は、SJISとして扱うので
出力を "受け取った側" の ”コマンドプロンプトが” Unicodeに変換して画面に出力する。
出力側でAPIが勝手に変換しているのではない。
> まず確認すべきなのはAPIの挙動がどう変わるのかで、
WindowsはUTF-16。ファイル名などOSから文字列を受け取るときに
A系APIを使うとシステムロケールの設定で設定された文字コードに変換されて渡される。
またOSに渡すときはUTF-16に変換される。
これは標準入出力やファイルに出力するときには全く関係ない。
SJIS前提のアプリがSJISで出力するとき(つまりA系APIのみを使ってる)
変換は一切されない。SJISで出力される。
Unicodeに変換されるのはアプリが_setmode等を使ってファイルハンドルを
Unicode出力モードに意図的に変更した場合。(OSのシステムロケールの設定で勝手に変わるのではない)
そしてこの話はUnicode出力する話で、今はSJISで出力するアプリの話をしてるのだから関係ない。
SJISで出力するアプリはシステムロケールの設定が英語だろうがUTF-8だろうが常にSJISで出力される。
だから英語モードのコマンドプロンプトはSJISを理解できないから文字化けする。
chcpでコードページを932にすると「Unicode出力モードではない出力」は、SJISとして扱うので
出力を "受け取った側" の ”コマンドプロンプトが” Unicodeに変換して画面に出力する。
出力側でAPIが勝手に変換しているのではない。
752デフォルトの名無しさん
2019/11/27(水) 03:57:05.53ID:j6pNPBz/ >>750
大丈夫だからなにか言い返せ
大丈夫だからなにか言い返せ
753デフォルトの名無しさん
2019/11/27(水) 04:00:06.35ID:j6pNPBz/ >>749
> A系のAPIがUTF-8に変換されるってのは、そういうことだろう?
違う。WindowsネイティブのUTF-16が、A系APIを使ったときにUTF-8で渡ってくるというのは
APIの引数の話であって、printfなどの標準入出力やファイル入出力とは関係ない。
> A系のAPIがUTF-8に変換されるってのは、そういうことだろう?
違う。WindowsネイティブのUTF-16が、A系APIを使ったときにUTF-8で渡ってくるというのは
APIの引数の話であって、printfなどの標準入出力やファイル入出力とは関係ない。
754デフォルトの名無しさん
2019/11/27(水) 04:41:20.28ID:h6Shw8l2 >>753
printfは内部でWriteFileを呼んでるよ?
printfは内部でWriteFileを呼んでるよ?
755デフォルトの名無しさん
2019/11/27(水) 04:46:25.68ID:j6pNPBz/ そこまで調べたなら、WriteFile、ReadFleには
AやWという区別がないところまで調べようか?
これはバイナリで読み書きする。必然的に文字コードの変換など起きない。
AやWという区別がないところまで調べようか?
これはバイナリで読み書きする。必然的に文字コードの変換など起きない。
756デフォルトの名無しさん
2019/11/27(水) 07:11:33.58ID:h6Shw8l2 ところがコンソールに書くときはどうなると思う?
757デフォルトの名無しさん
2019/11/27(水) 07:34:16.89ID:j6pNPBz/758デフォルトの名無しさん
2019/11/27(水) 09:00:23.34ID:h6Shw8l2 UTF-8は文字の一部にASCIIコードが含まれることはない
とか言っちゃう人に説明しても無駄だと思うからやめとく
とか言っちゃう人に説明しても無駄だと思うからやめとく
759デフォルトの名無しさん
2019/11/27(水) 09:13:15.33ID:yBES+u77 そこは単なる表現ミスだろww
ID:j6pNPBz/ は言ってること基本的にあってる
こいつはどうか知らんが、このタイプのやつってやたら自信と知識あるのにプログラミングできないことが多い
ID:j6pNPBz/ は言ってること基本的にあってる
こいつはどうか知らんが、このタイプのやつってやたら自信と知識あるのにプログラミングできないことが多い
760デフォルトの名無しさん
2019/11/27(水) 09:29:28.95ID:naVEM3yc Code Pages
https://docs.microsoft.com/en-us/windows/win32/intl/code-pages
Many Windows API functions have "A" (ANSI) and "W" (wide, Unicode) versions.
The "A" version handles text based on Windows code pages, while the "W" version handles Unicode text.
Windows code pages are also sometimes referred to as "active code pages" or "system active code pages".
A Windows operating system always has one currently active Windows code page.
All ANSI versions of API functions use the currently active code page.
https://docs.microsoft.com/en-us/windows/win32/intl/code-pages
Many Windows API functions have "A" (ANSI) and "W" (wide, Unicode) versions.
The "A" version handles text based on Windows code pages, while the "W" version handles Unicode text.
Windows code pages are also sometimes referred to as "active code pages" or "system active code pages".
A Windows operating system always has one currently active Windows code page.
All ANSI versions of API functions use the currently active code page.
761デフォルトの名無しさん
2019/11/27(水) 09:33:42.45ID:aKqeYuzt 頭でっかちって奴?
装備は良くてもと実力が・・・的な
装備は良くてもと実力が・・・的な
762デフォルトの名無しさん
2019/11/27(水) 10:18:57.48ID:j6pNPBz/763デフォルトの名無しさん
2019/11/27(水) 10:54:33.13ID:kdwhCzf5 素人ですまんが"a"の文字コードはUTF8ではどうなるの?
764デフォルトの名無しさん
2019/11/27(水) 10:57:33.93ID:vWenFewH ASCIIと全く同じ。そして他の文字の一部に含まれることはない。
765デフォルトの名無しさん
2019/11/27(水) 11:01:09.01ID:aKqeYuzt >>762
\に拘らなくてもダメ文字でよくない?
\に拘らなくてもダメ文字でよくない?
766デフォルトの名無しさん
2019/11/27(水) 11:04:56.74ID:vWenFewH767デフォルトの名無しさん
2019/11/27(水) 11:19:42.60ID:BEy4sBWT >>762
マルチバイトの文字の2バイト目以降にASCII文字が含まれることはない、とか言えば相手に誤解されないんじゃないか?
相手が理解してない、間違ってると決めつけるのでなく、自分の意図が正しく相手に伝わってない可能性があることに想像が至らないのかな。
いつも他人と衝突してばかりで(主に周囲の方が)苦労してそう。
マルチバイトの文字の2バイト目以降にASCII文字が含まれることはない、とか言えば相手に誤解されないんじゃないか?
相手が理解してない、間違ってると決めつけるのでなく、自分の意図が正しく相手に伝わってない可能性があることに想像が至らないのかな。
いつも他人と衝突してばかりで(主に周囲の方が)苦労してそう。
768デフォルトの名無しさん
2019/11/27(水) 11:38:22.80ID:FqMFrKp3 APIの挙動は変わらないから問題ないっていうのなら、本件のスイッチはなんの意味が?
実際に、表示に問題が出たりpythonで問題が出たりしてるけど、原因は何?
このスイッチで何が起こっている?
本当にロケールの変更だけなのか?問題ないならスイッチなんか付けずに勝手に処理変えていいのでは?
この説明をして初めて問題がないという事に説得力が出るんじゃないの?
実際に、表示に問題が出たりpythonで問題が出たりしてるけど、原因は何?
このスイッチで何が起こっている?
本当にロケールの変更だけなのか?問題ないならスイッチなんか付けずに勝手に処理変えていいのでは?
この説明をして初めて問題がないという事に説得力が出るんじゃないの?
769デフォルトの名無しさん
2019/11/27(水) 11:45:34.42ID:fiNnSHXp > APIの挙動は変わらないから問題ないっていうのなら、
誰もそんなこと言ってない。スレ読み返してお前がどれにレスしてるのか言ってみろよ。
誰もそんなこと言ってない。スレ読み返してお前がどれにレスしてるのか言ってみろよ。
770デフォルトの名無しさん
2019/11/27(水) 11:48:33.36ID:h6Shw8l2 >>768
アプリの話だから関係ない。キリッ
アプリの話だから関係ない。キリッ
771デフォルトの名無しさん
2019/11/27(水) 12:07:01.06ID:kdwhCzf5 >>764
つまり、UTF-8にASCIIコードが含まれるんだよね。
つまり、UTF-8にASCIIコードが含まれるんだよね。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 港区、中国に宣戦布告 中国外務省をおちょくる掲示物を展示 [175344491]
- 【ほんこん悲報】吉本新喜劇の中国公演が中止に! [523957489]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
