文字コード総合スレ Part12

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/12/17(月) 16:48:24.47ID:Pfqpaohb
プログラマーなら一度は煩わされたことのある文字コードについてのスレ。
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 http://mevius.5ch.net/test/read.cgi/tech/1516629503/
2021/04/06(火) 00:46:43.57ID:+n99AGjS
>>711
> 日本語版Windowsのデフォルトコードページは今でもCP932だが?

UTF-16だよ
だから日本語版Windowsで絵文字が使えるんだが?

CP932がどこで使われるのかわかってない?
2021/04/06(火) 00:47:44.91ID:+n99AGjS
>>710
コマンドプロンプトの問題で
Windows全体(エクスプローラーやブラウザ等)には
当てはまらないと認めるかい?w
2021/04/06(火) 00:50:23.32ID:+n99AGjS
>>716
その上に「Unicodeに対応してない古いアプリの場合」って書いてあるやろ?w

Unicodeに対応している新しいアプリはUnicodeだし

お前「Unicodeに対応してない古いアプリ」がUTF-8にしたら
動くようになるとでも思ってんの?Unicodeに対応してないのにw
2021/04/06(火) 01:02:50.31ID:4WR5kIDO
最近のwin10アップデで古いwinアプリが文字化けしだしたのはこれか?
設定で対応できるし内部で一貫してる限り問題はないけど
2021/04/06(火) 01:05:08.37ID:+n99AGjS
>>720
どこの設定をどう変えたら対応できたんだ?
2021/04/06(火) 01:18:09.92ID:4WR5kIDO
>>721
うろ覚えだけど英語圏向けwin10固有の問題だったかと
日本語版と日本語設定の英語版が違うと言う罠
システムロケールを日本語(英語以外)に変えるとユニコにフォールバックするようで
コードページ切り替えオプションがまた別にあるけどグローバルに適用されるので今度は他が化ける、アプリごとに設定開くので非常に面倒くさい
2021/04/06(火) 01:21:01.30ID:4WR5kIDO
化けたメニューを記号として認識できるように訓練したから最近は弄ってない
高くても日本語版買おうね!
2021/04/06(火) 01:27:04.53ID:T8jVvgda
ロートルが多いとか関係ないんだがな
若くたって古いシステムの吐くログを見ようと思ったらEUCだったりするんだよなあ
2021/04/06(火) 01:33:59.26ID:4WR5kIDO
ローカル版windowsには、スクリーン上に同時に存在するテキストを複数の方式でデコードする機能がある、でいいのかな
2021/04/06(火) 02:47:28.83ID:iR3Vnnhg
>>719
ASCIIにしか対応してないソフトはそれで意外と動いたりするんだよな
Unicodeファイル名が普通に使えるようになったり、というかそのための設定
マルチバイト対応してるソフトは壊れるけど
今ならmanifestでアプリ単位でコードページをUTF-8にするのもあり
2021/04/06(火) 03:58:58.47ID:xQBleszy
どうしたらいいのか
728デフォルトの名無しさん
垢版 |
2021/04/06(火) 08:00:46.97ID:zE9kqee/
窓から投げ捨てればいいのさ
2021/04/06(火) 08:27:12.05ID:MTiaA6bM
>>722
> 日本語版と日本語設定の英語版が違うと言う罠

Windows自体はUTF-16で複数の言語に対応しているとは言え、
アプリは別の問題で、UTF-16に対応してない古いアプリは
特定の文字コードでしか動かないんだよ
その古いアプリも手厚くサポートしてるのがWindows
2021/04/06(火) 10:13:01.08ID:wM6kHA3V
>>729
新しいソフトでもナローAPI使ってるやつたくさんあるわ特に欧米産。
ワイドAPI (UTF16)が標準とか思ってる時点で何もわかってない。
2021/04/06(火) 13:40:51.68ID:tV10gXpM
何で文字コードスレにこんな無知がいるんだろうなあ。
2021/04/06(火) 15:39:19.88ID:P0s3gsjp
>>730
そのアプリ、絵文字使えないってことだよね?
いまどきそんなのあるの?
3つぐらい名前言ってよ
2021/04/06(火) 15:54:30.38ID:wM6kHA3V
>>732
そんなことはない。どうして使えないと思った? もしかしてコードページの使い方知らないの?
コードページを CP65001 や CP1200 に設定すれば使える。
コードページが CP932 だと使えないのは、もちろんだが。
2021/04/06(火) 16:20:50.90ID:P0s3gsjp
>>733
コードページは関係ないナローAPIを使ってると
絵文字は使えない
2021/04/06(火) 17:48:00.38ID:wM6kHA3V
>> 734
「コードページは関係ないナローAPI」 ← 自己矛盾。
俺のいうナローは Windows ならコードページ、Linux ならロケール依存なんだが?
他にどんな意味で解釈したの? お前の定義を教えて。
その上で、お前の定義だとどうして絵文字が使えないのか解説して。
2021/04/06(火) 18:33:56.50ID:iJXUWS4l
絵文字のデータとしての扱いとフォント依存による表示の区別付かないのかよ
2021/04/06(火) 22:47:03.03ID:P0s3gsjp
>>735
ナローAPIとそうでないAPIを具体的に言ってみ
2021/04/07(水) 01:36:05.17ID:vjDi/c6S
>> 737
誤魔化さずに、まずはこっちの質問に答えろや? できるもんならな。
お前、まとともに複数の言語と文字コードに対応したプログラムとか組んだことないやろ?
中途半端な知識で知ったかぶりしてて、引っ込みつかなくなっただけなら、謝ればすむんやで。
匿名掲示板なんだから、謝ると負けとかはないぞ、勉強して出直せばいい。
謝るのが、めんどくさかったら ROM っとけ。
2021/04/07(水) 01:55:04.39ID:vjDi/c6S
しかし、あれだな。
ナロー系のデフォルトは今後 UTF-8 になっていくって話してるのに、
「ナローだと絵文字使えない」とか言い出すやつが湧くのは、どうしたもんだか。
基礎知識が足りてないのか、文脈読めないのか、その両方なのか。闇は深い。
2021/04/07(水) 02:26:54.44ID:g0cTo5ct
喧嘩腰なのはいいけどレスアンカくらいちゃんと書こうよ >>の後のスペースは不要
2021/04/07(水) 04:00:51.96ID:APsY2wPt
ナロー系ってなんだ?
オレオレ用語で言ってても誰にも通じない
2021/04/07(水) 04:16:35.54ID:K+K6a3YU
あれや、トラックに引かれて死ぬが異世界に転生
そこではなぜかチートじみたものすごい能力が・・
2021/04/07(水) 05:15:10.31ID:ALhqLzoC
>>741
win32api の一部の api (文字列を与えるもの)は同一機能で W系とA系の両方が準備されていますが、
そのうちの A系のことをナロー系と呼んでいるのでは?
2021/04/07(水) 07:09:32.19ID:dkOgfJAM
>>735
Windowsでもロケールじゃないかな?
ここで言ってるコードページってどこで設定するやつ?
2021/04/07(水) 09:06:06.52ID:hP9Ops4B
Linuxはロケールの設定(LANGとかLC_ALL環境変数)でja_JP.UTF-8 みたいに
言語(ja_JP)と文字コード(UTF-8)の両方をいっぺんに設定するけど
本来この2つは別の概念

Windows NT系はOSが使う文字コードはUTF-16に統一されている
ロケールに相当する設定は「設定」の「地域」から「日本」等を選ぶ
これはUIで使用する言語やカレンダーの書式なんかを変更するが
文字コードはUTF-16しかないので変わることはない

これとシステムロケールの設定(コードページ)は別物
システムロケールの設定はUnicodeに対応してないアプリ(主にWin9x用)が
どの文字コードを使っているか?を推測するための互換機能
Windows 10でこのシステムロケールの設定としてUTF-8(ベータ機能)が追加されたから、
今後は(ユーザーがUTF-8に設定していれば)ANSI系APIでもUnicodeを使うことが可能になった。
もちろんOS内部はUTF-16に統一されてるので、UTF-8からUTF-16へ変換される

ANSI系APIでUnicodeが使えるようになったといっても、それはUTF-8対応で開発した新しくアプリの話
昔のSJIS前提で開発したアプリが自動的にUnicode対応に変わることはない。
Unicodeに対応してない古いアプリはASCII互換部分以外は文字化けする。
あくまで新しいアプリをUnicode対応で開発するときの選択肢の一つとして
ANSI系も使えるようになりましたよーという話
これはユーザーにUTF-8に変更してもらえる(=古いアプリを使ってない)ことが前提
2021/04/07(水) 09:06:55.52ID:vjDi/c6S
>>741
俺も「ナロー」がそれほど良い用語だと思ってるわけではないけど Linux,Mac,Windows で共通の良い技術用語がないので、マシな方なんだよ。
Unix系の用語だと「ワイド文字」の対義語は「多バイト文字」なんだが、これだとさらに誤解する人多いしなあ。1バイト ASCIIでも「多バイト」ってなんだ?的な。
2021/04/07(水) 09:15:40.29ID:EM71BOqG
コードページはLC_CTYPE相当であってLANGやLC_ALLではない

CP932はLC_CTYPE=ja_JP.SJISのようなもの(CP932≠ShiftJISだけど)
なのでWindowsのデフォルト日本語環境はmacOSやLinuxのja_JP.UTF-8とは違う

それにUTF-8に対応するCP65001だけでなくEUC-JPに対応するCP20932もだいぶ昔から
前から存在している

あとこの辺のロケール関係はISO C C95で規定
Windows固有の話ではない
2021/04/07(水) 09:18:43.08ID:oaQMbN7A
このスレの人たちはエディタで書いたソースを何で保存するの?UTF-8?
秀丸はデフォルトでSJISだったよね?(今は違うのか?)
2021/04/07(水) 09:19:55.48ID:hP9Ops4B
>>747
> Windowsのデフォルト日本語環境はmacOSやLinuxのja_JP.UTF-8とは違う

Windowsのデフォルト日本語環境は
1. OSの文字コード・・・UTF-16統一
2. ロケール(UIやカレンダーなど)・・・日本語
3. Unicode非対応の古いアプリ用、CP932に設定

いい加減システムロケールというのは
OSのデフォルトとは関係ないと認識してくれ
2021/04/07(水) 09:21:37.00ID:hP9Ops4B
>>748
ずっと前(Windows 2000の頃)から
Linuxと相互運用するものはUTF-8
Windowsでしか使わないソースコードはUTF-16だよ
Windowsでしか使わないものは少ないからほとんどUTF-8だけど
2021/04/07(水) 09:24:13.21ID:hP9Ops4B
あと秀丸とかとうの昔に使うのをやめた
遅くともSublime Text(2008年ごろ?)からUTF-8に統一
atomを経て今はvscode

それまでは何使ってたっけ?vimとかemacsとか一時期使ってたけど
そういや昔はLinuxではEUC-JPを使ってたね
2021/04/07(水) 10:21:35.02ID:gW8in2Np
Win10 1803でANSI APIでUTF-8を使うようにする設定がベータで入ったけど、
結局MSは影響が大きすぎると判断したんだろう
代わりに1903で、システム全体じゃなくてアプリ単位でUTF-8を使えるようにする機能が入った
ANSI APIのデフォルトがシステム全体でUTF-8になるのは5年とか10年先の話じゃないかな
2021/04/07(水) 11:34:30.51ID:hP9Ops4B
> ANSI APIのデフォルトがシステム全体でUTF-8になるのは5年とか10年先の話じゃないかな
> 結局MSは影響が大きすぎると判断したんだろう

MSじゃなくても影響が大きいってわかるわ。デフォルトをUTF-8にするのは
古いアプリとの互換性を切り捨てるってことを意味する
デフォルトにしていいのは、既存のUnicodeに対応してないアプリが消え去って
互換性を気にしなくていい時代になってから。それぐらい時間がかかるのは当たり前だろう

アプリ単位でUTF-8が使えるならそれで十分でしょ
UTF-8用に作られたアプリは、システムロケールをUTF-8にするように
マニフェストかなにかで設定できるだろうし
Windows NTのデフォルトの文字コードがUTF-16に統一されてるわけだから
わざわざ古いアプリの方のデフォルトを変更する理由がない
2021/04/07(水) 12:27:49.00ID:hP9Ops4B
システムロケール(本来は古いアプリ用の設定)を
UTF-8に変更することの意味をわかってない人がいるようだから
くどいようだけどまとめておく

1. システムロケールでUTF-8を設定できるようになったのはWin10 1803から
2. 日本語をSJISで使うアプリが、システムロケールがSJISになってるのを前提としていたように
システムロケールがUTF-8になってることを前提としてアプリを作らなければいけない
3. つまりWin10 1803登場より前にシステムロケールUTF-8に対応してるアプリは存在しない

Windowsの本来の文字コードであるUTF-16に対応してるアプリ=Unicodeや絵文字に対応してるアプリは
そもそもシステムロケールの設定には何も依存しない。

今現在システムロケールUTF-8に対応したアプリは殆どないのに
互換性を壊してまで今すぐデフォルトを変更してメリットあると思う?
そういう話。

これからはUTF-8前提で作られたアプリ(Linuxアプリ等)はWindowsに移植しやすくなりますよ。
これからはUTF-8前提で作ってもWindowsとLinuxに両対応出来ますよ。という話
2021/04/07(水) 13:30:36.82ID:gW8in2Np
ASCII専用の欧米ソフトは案外その設定で動いたりするんだよ
ASCII圏のユーザーにとってはチェックを入れるだけでUTF-8が使えるようになる(かもしれない)便利設定
別に新しく開発するアプリのための設定というわけではない
マルチバイト圏のユーザーにとっては互換性壊すだけの余計な設定だが

ちなみにANSI APIでUTF-8を使う際には、パス名がMAX_PATHバイトまでしか扱えないという
重大な欠点があるのは注意な
Wide APIならMAX_PATHコードユニットだから、それに比べると扱える文字数は最悪1/3になる
2021/04/07(水) 14:39:04.07ID:UOCtMYlF
Unicode and Character Sets
https://docs.microsoft.com/ja-jp/windows/win32/intl/unicode-and-character-sets
Unicode in the Windows API
https://docs.microsoft.com/ja-jp/windows/win32/intl/unicode-in-the-windows-api
2021/04/07(水) 16:22:47.71ID:vjDi/c6S
>>753
間違い。昔から複数の文字コードで動くプログラムはある。
コードページ切り換えによって SJIS でも KOI8 でも BIG5 でも動くように作られているプログラムは、
修正無しで UTF-8 にも対応するようになる。
そもそもコードページの切り換えにちゃんと対応したプログラムはそうなってるのが普通。
SJIS専用処理とかしてるアホが作ったプログラムは、修正が必要だが、それは複数文字コード対応できてないんだから仕方ない
2021/04/07(水) 17:58:42.18ID:bf9TqbnX
アプリ単位でUTF-8が使えるようになってたの知らなかった
横からだけどありがとう
https://superuser.com/questions/1033088/is-it-possible-to-set-locale-of-a-windows-application-to-utf-8/1451686#1451686
のUpdateのところに対応方法がまとまってた
2021/04/07(水) 20:05:39.59ID:dkOgfJAM
>>757
一般論としてはそうだけど、WindowsのANSI系APIやVSのCRTが本当に全部UTF-8に対応してるんだっけ?
2021/04/07(水) 21:05:32.99ID:7mS/mNQI
コマンドプロンプトとサロゲートペア縛り
https://zenn.dev/zetamatta/books/b820d588f4856bcf836c/viewer/95bfb9
2021/04/07(水) 22:56:12.09ID:vjDi/c6S
>>759
Windows には山ほどライブラリ(DLL)があって、その中には対応できてなかったり、できてるはずなのにバグバグなやつとか多数ある。
今後のアップデートで直るかもしれないやつも多数あるけど、仕様上どうやって直すんだ?! みたいなやつもある。
一般論でしかないのは、その通り。過渡期なんだよ。
一方で Microsoft は CP_ACP はもう使うな CP_UTF8 使えとか言い出してる。
2021/04/07(水) 23:51:48.85ID:hP9Ops4B
> 一方で Microsoft は CP_ACP はもう使うな CP_UTF8 使えとか言い出してる。
そりゃそうだろ。CP_ACPは古いアプリが使ってるかもしれないが
それじゃUnicodeには対応できない。文字数とかサロゲートペアが
正しく判断できない。ANSI系でUnicode使うなら書き換えが必要
2021/04/08(木) 01:14:14.46ID:osA77g/q
>>762
ACP でも UTF8 や UTF16 が使えること知らない人は引っ込んでて。
2021/04/08(木) 07:51:09.35ID:65tq2lAC
CP_ACPとかってMultiByteToWideChar以外どこで使うんだっけ
2021/04/08(木) 08:24:03.75ID:5KgENm+i
相手するなよ
766デフォルトの名無しさん
垢版 |
2021/04/08(木) 14:33:47.10ID:BYjSvKlS
過渡期30年
まだまだ続く過渡期
2021/04/08(木) 16:48:36.55ID:osA77g/q
コンピュータのコードなんてずっと更新中みたいなもんだけど。
MS が UTF-8 のサポートをまともに開始したのは 2017年から。
古い文字コードを捨てて,今後は UTF-8 のみを推奨ってアナウンスしたのが 2019年から。
30年が何を指すのかしらんけど、あと5年や10年くらいは待ってやれ
2021/04/08(木) 16:51:08.06ID:cADyO+yl
バッチスクリプトをUTF8で走らせられるようになったの?
2021/04/08(木) 17:54:09.52ID:osA77g/q
中で呼び出すプログラムが code pege 切り換え対応、もしくは utf8 対応ならバッチできるよ
例えば UTF-8 で以下のようなバッチを書けば、日本語Windowsでも動くよ
chcp 65001
echo かな漢字 > file.txt
type file.txt
pause
2021/04/08(木) 18:08:44.31ID:UozSJGhl
>>767
> 古い文字コードを捨てて,今後は UTF-8 のみを推奨ってアナウンスしたのが 2019年から。

古い文字コードを捨ててません。
新たにUTF-8対応を増やしただけです。

Linuxは古い文字コードを捨てましたか?捨ててないでしょう。
そんなアホなことをするOSなんてありませんよ。
2021/04/08(木) 18:11:58.41ID:UozSJGhl
>>768
それはずっと前から出来る。
少なくともWindows 2000では確認した。
ただ画面の表示がおかしくなっていただけ
処理結果はまともだった
2021/04/08(木) 18:17:12.48ID:cADyO+yl
マルチバイト文字を含むコマンド引数がただの文字列じゃなくて、ファイルパスだったりすると積むはず。
2021/04/08(木) 18:27:11.87ID:UozSJGhl
ファイルパスも文字列だろ

ところでなんでcp932に設定していても
絵文字が含まれたディレクトリにcdできると思う?
絵文字はcp932には含まれてない。だから使えるはずがない
だけどコマンドプロンプトでcp932にしても普通にcdできる

答えは、cp932は古いアプリ用であって
コマンドプロンプト自体はUTF-16で動いてるからなんだよ
WindowsはNTの時代にすでに完全にUnicode対応を終えてる
OSはUnicode(UTF-16)で動いている

cp932とかいうのは互換性機能でOSとしては重要ではなく
互換性機能をなくすのは、それが不要になってからで十分なわけ
2021/04/08(木) 19:21:17.04ID:osA77g/q
>>770
「捨てる」っていうのが正確で無かったか? サポートをしないって意味ではなくて
「今後は書かれるプログラムは古い文字コードをサポートする必要はない。UTF-8 だけ排他的に使用することを推奨する」
という方針を打ち出したんだよ。もう前のことなのでニュース記事のリンクとか出せないけど、かなり話題になった。
開発者ドキュメント等を読めば買いてると思う。
2021/04/08(木) 19:30:38.81ID:osA77g/q
>>771
わかってて言ってるんじゃないかと思うけど、重要なのは echo の行ではなくchcp 65001 の話。
これで TYPE の行のように正しく画面表示されるし、他のバッチから呼び出されるプログラムも UTF-8 の切替わる。
pause の行のように言語が日本語から英語に切替わってしまうので、メッセージとか日本語じゃないと困る人には駄目な方式なんだが
2021/04/08(木) 19:46:39.13ID:osA77g/q
>>773
お前は、バッチファイルすらまとも使ったことないだろ?
内部コードと外部(入出力)コードの区別すらまともについてないくせに、いちいちコメントすんな。
Windowsの内部コードがUTF16のことなんて全員わかってるんだよ。
みんなが議論しているのは外部コードのはなし。コードページとかUTF-8とかも全部、外部コードに何を使うか。
バッチファイルの文字コードも外部コード。
マイクロソフトは外部コードを UTF-8 に統一する方向で動いてるって話をしてる。
2021/04/08(木) 20:50:56.63ID:UozSJGhl
>>774
> 「今後は書かれるプログラムは古い文字コードをサポートする必要はない。UTF-8 だけ排他的に使用することを推奨する」

前からUnicode(UTF-16)推奨だったじゃん。
今後は書かれるプログラムは古い文字コードをサポートする必要はないのは
UTF-16でも同じことで、古い文字コードをサポートする必要なんてなかった

単にANSI系でもUTF-8が使えるようになりましたってだけだよ
2021/04/08(木) 20:54:30.34ID:UozSJGhl
>>776
> マイクロソフトは外部コードを UTF-8 に統一する方向で動いてるって話をしてる。
そんな動きないよ

今だって標準はUTF-16だし、UTF-8もサポートしたと言うだけの話
2021/04/08(木) 20:58:09.07ID:UozSJGhl
> みんなが議論しているのは外部コードのはなし。コードページとかUTF-8とかも全部、外部コードに何を使うか。

違うよ。コードページは古いアプリが使うコードのことだよ
2021/04/08(木) 21:26:50.32ID:PAVlbVqd
古いだの新しいだのそういう曖昧な言葉を使うのは良くない
2021/04/08(木) 21:44:00.84ID:5KgENm+i
入出力時のデフォルトコードページの話だから古いか新しいかなんて関係ないんだけどな。

いい加減みんなこのバカ相手するのやめようぜ。
2021/04/08(木) 22:03:05.49ID:cADyO+yl
マイクロソフト謹製のPowerShellは完全にコードページ依存だよ。
MSYSなどUTF8で出力する伝統的な実行バイナリとうまく共存できない。パイプが積む。それが現実。
2021/04/08(木) 23:16:12.03ID:u7kxAAh5
さすがに、このスレにいて Windowsの「メモ帳」アプリのデフォルト文字コードが「 UTF-8 (BOM無し)」に変更されたことを知らない人はいないだろ。
これはMSが UTF-8 BOM無しを今後の標準とすることに舵を切った結果だよ。
これが UTF-16 だったり BOM つきだったりしないのは、単なる気まぐれじゃない。
2021/04/09(金) 01:54:21.80ID:ZRNzIbD0
BOM付きじゃなくてBOM無しUTF-8がデフォルトになったのは驚いた
そっちに舵を切ったのはそうだろう
だがExcelでBOM無しUTF-8なCSVが扱えないとか、リソースコンパイラで
BOM付きUTF-8すら自動判別してくれないとか個々のアプリはまだまだ対応不足
2021/04/09(金) 01:56:45.03ID:s5EJohG2
デフォはありのほうがいいと思うんだがな
2021/04/09(金) 03:06:58.40ID:3uc6Yjpo
>>780
厳密に言うならANSI系のAPIを使ってるアプリのこと
このAPIは元々Win9x用で(UTF-8に対応が発表されるまで)
Unicodeに対応してない古いアプリ用だった

つまりUnicodeに対応しているアプリは
UTF-16を使っていたということ

もちろん内部文字コードとしてUTF-8を使ってるアプリもあるだろうが
それは今も昔も変わらずUTF-8が使える
そういうアプリはOSへ処理を渡すときにUTF-16に変換して渡してる
その変換は正しく作っているなら自動的に行われるのでさほど面倒ではない

なのでアプリ開発側からすれば、そんなにメリットはない
これからはANSI系APIも使えますよーと今更言われた所で
元からUTF-8を使ってるアプリは、UTF-16への(自動)変換が
省略できる程度の意味しかない
今どきWindowsのAPIにバリバリ依存して作ることなんてないしね
2021/04/09(金) 03:08:04.84ID:3uc6Yjpo
>>783
> さすがに、このスレにいて Windowsの「メモ帳」アプリのデフォルト文字コードが「 UTF-8 (BOM無し)」に変更されたことを知らない人はいな
> これはMSが UTF-8 BOM無しを今後の標準とすることに舵を切った結果だよ。

なあ。お前。メモ帳以外の事例は存在するか?
一テキストエディタにすぎないメモ帳のデフォルトが
変わった程度で騒ぎ過ぎだよ
2021/04/09(金) 04:36:09.91ID:l1/kJ2NK
はぁ?
クロスプラットフォームで開発されている実行バイナリはC/C++案件が多いから、WindowsのAPIにバリバリ依存だよ
.NETなんてLinuxやmacOSで動かないだろ
2021/04/09(金) 09:51:30.06ID:dDP8WojW
>>786
> 今どきWindowsのAPIにバリバリ依存して作ることなんてないしね
Windows の API 使わずにプログラムとかww
それこそ fopen() とかの標準Cライブラリこそコードページ依存だろ。もしかしてそれすら知らない?
Mac 使いですか? それとも Java屋さん?
Windows の API まともに知らないやつが プログラム版で Windows について語ってんの?
2021/04/09(金) 10:10:06.15ID:3uc6Yjpo
> Windows の API 使わずにプログラムとかww

え?知らんの?そういうのは言語やライブラリが解決してくれるんだよ。
.NET フレームワークとか、nodeとかrubyとか
Windows APIを使わないことなんて当たり前
2021/04/09(金) 10:12:26.81ID:3uc6Yjpo
> .NETなんてLinuxやmacOSで動かないだろ
動くじゃん
2021/04/09(金) 10:21:23.24ID:7vOVb2O0
EcxelがBOMなしのCSV読めんからな
メモ帳がBOM無しでも関係ないな
2021/04/09(金) 11:02:02.21ID:dDP8WojW
それ以前に .Net デフォルトだとコードページ依存じゃないかwww
ruby は Windows のプログラムじゃないし。
node って何? もしかして Node.js のこと? まさか JavaScript 基準で Windows の文字コード語ってたの?
さすがに、それはないよね...。
node というのは聞いたことない、もしくはどれを指すのが不明なので教えて。
2021/04/09(金) 12:38:07.07ID:3OIwAD6R
>>745
話題持ち込んじゃった人だけど分かりやすい
ありがとう
795デフォルトの名無しさん
垢版 |
2021/04/09(金) 15:21:47.85ID:tQcHQU6Y
nodeはオワコン
るuびyはもっとオワコン
2021/04/09(金) 17:38:21.19ID:3uc6Yjpo
>>793
ああ、今どきのWindowsプログラムを知らんのね
例えばvscodeはJavaScriptで出来てるんだよ
.NETがコードページ依存って何を言ってるんだろうか
2021/04/09(金) 18:36:32.22ID:dDP8WojW
> .NETがコードページ依存って何を言ってるんだろうか
入出力用の文字コードの概念がないやつには一生理解できないだろう(確度の高い予測)
他の人のためにリンク張っとく
https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding.default

ちなみに Linux とかでも動くオープンソース版の .NET Core はコードページないので、UTF-8 (BOM無し)になる。
2021/04/09(金) 18:47:45.05ID:3uc6Yjpo
>>797
そんなの出されても意味がないなぁ。
言語の内部コードと、外部コードの違いわかってる?

例えばPythonの文字コードはUTF-8なわけ
それをStreamRecodeを使って自動的に外部文字コードに変換する時
https://docs.python.org/ja/3/library/codecs.html#streamrecoder-objects

Pythonの文字コードはSJISだ!コードページに依存してるんだ!なんて言わないでしょ
.NETも内部の文字コードはUnicodeなわけ
外部への文字コードへの自動変換を備えてるけど
それはほとんどの言語で標準的に持ってる機能なわけ
2021/04/09(金) 18:48:43.58ID:S5JYCJ7D
そういえば、関係ないけど vscode も UTF-8 BOM無しが規定文字コードだね。
メモ帳だけじゃなくてテキストエディタは UTF-8 ってことか。
2021/04/09(金) 18:51:28.05ID:3uc6Yjpo
>>797
> ちなみに Linux とかでも動くオープンソース版の .NET Core はコードページないので、UTF-8 (BOM無し)になる。

デフォルトで入ってないだけ

PowerShell on Linux(Mac)でShift-JISを扱う
https://blog.shibata.tech/entry/2016/08/22/231538
2021/04/09(金) 19:25:48.50ID:dDP8WojW
>>798
> 言語の内部コードと、外部コードの違いわかってる?
お前がわかってないのは知ってる。ソースコードの文字コードを内部コードと勘違いしてるとか
Python の内部コードが UTF-8 だと思ってるあたり素人丸出し。
Python の内部文字コードはかなり昔から UTF-32 (UCS4) だよ。それ以前は UCS2。
2021/04/09(金) 19:33:45.09ID:dDP8WojW
>>800
> デフォルトで入ってないだけ
デフォルトのエンコーディングの話してたの忘れたの?
入出力用の文字コードが切り換えできるのは当り前で、そのデフォルトが何かっていう話をしてるんだけど
2021/04/09(金) 21:16:02.60ID:ZRNzIbD0
>>801
ID:3uc6Yjpoは何を言ってるのか分からんのでほっとくとして、
Python 3.3からはメモリ使用量節約のため、latin1, UCS2, UCS4の自動切り替えな
https://www.python.org/dev/peps/pep-0393/
2021/04/09(金) 22:16:54.05ID:3uc6Yjpo
>>802
だから.NETのデフォルトはUnicodeだろ
.NETアプリが世界中の文字に対応してるってわかってますかー?
2021/04/10(土) 01:56:42.91ID:Tkmy4TcV
>>803
正確にはそうだね。
ややこしい話しても絶対ついてこれないだろうと思ったの最終的に UTF=32 に落ちるのでいいかと思って簡略化しちゃった。
そこまで、ちゃんとわかってる人がいて良かった。訂正サンクス。
レベル低いの混ると、ついついレベル低い回答になってしまう。
2021/04/10(土) 07:57:12.51ID:wS2LKV0q
.NETアプリが絵文字を表示できるのはなんで?
2021/04/10(土) 07:59:08.31ID:wS2LKV0q
WPFアプリって言ったほうが正確かな?
2021/04/10(土) 09:09:41.00ID:AcLZ31++
互換性のせいでコマンドプロンプトの仕組みが複雑だから勘違いしてるんだろうけど
コマンドプロンプト自体はUTF-16で動いてる
そうでなければUnicode文字を使ったファイル名とかが表示できるわけがない

それに対してコンソールアプリケーションはUnicode(UTF-8、UTF-16、UTF-32いずれにも対応)で
出力するモードとANSIで出力するモードを選べる
Unicodeで選んだらOSによってUTF-16に変換されてコマンドプロンプトに出力される
ANSIモードで出力した場合、OSが自動的にUnicodeに変換してコマンドプロンプトに出力する
このANSIモードからUnicodeに変換するときに利用する情報がコードページ

コンソールアプリケーションは、どれでも好きな文字コードで出力してくださいってだけだよ
コードページの情報を利用するもしないも自由
コードページの情報を無視してSJISで出力することだって出来る
まあそんな事するとコマンドプロンプト上では文字化けするがファイルに出力すればなんの問題もない

Unicodeに対応してるアプリはUnicodeモードで出力するだろうね
作り込んでるアプリなら、コードページに従うだろうねってだけの話
809デフォルトの名無しさん
垢版 |
2021/04/14(水) 13:39:34.45ID:hz0wFRHA
練習
⥁⥀
⟳⟲
↻↺
⤾⤿
⤸⤹
810デフォルトの名無しさん
垢版 |
2021/04/14(水) 15:39:07.59ID:hz0wFRHA
🌍🌎🌏

サロゲ
811デフォルトの名無しさん
垢版 |
2021/04/14(水) 15:40:00.22ID:hz0wFRHA
win10
コマンドプロンプトで
chcp 65001
でも
>>810
は化けたわ
2021/04/14(水) 19:39:34.04ID:35zwdl55
>>810
Windows 10 のIEで表示できた
色はつかんかったけど
もちろんEdgeなら色付きで表示できた
2021/04/14(水) 19:47:01.17ID:35zwdl55
>>811
フォントの問題だからね
echo その文字 > test.txt とかやってファイルに書き出したら
cmd /UのUnicodeモードでUTF-16LEで問題なく保存されたよ
もちろんcmd /Aだとchcp 65001でUTF-8にしたら保存される。
2021/04/14(水) 19:49:01.33ID:35zwdl55
× フォントの問題だからね
○ 表示周りの問題だからね

データ自体は問題なく扱えるといいたかった
2021/04/17(土) 14:25:57.05ID:zVeqA+50
Clarify guidance for use of a BOM as a UTF-8 encoding signature
https://www.unicode.org/L2/L2021/21038-bom-guidance.pdf

・Do not use U+FEFF as a ZWNBSP character; use U+2060 WORD JOINER instead.
・Include a BOM if one is known to be required by a targeted protocol.
・Otherwise, include a BOM when authoring a UTF-8 text file that contains non-ASCII characters,
 is not targeting a specific protocol, and may be opened by applications that will not assume UTF-8 by default
 (this is useful on systems like Microsoft Windows where some applications assume text files to be encoded with the Active Code Page).
・Otherwise, do not include a BOM.
2021/04/17(土) 15:20:55.47ID:ijYyB/Qg
>>813
/u スイッチで出力されるUTF-16LEはBOMなしなんだな
開けないエディタもあった
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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