文字コード総合スレ part15 (470レス)
1-

81
(1): 2024/11/10(日)16:51 ID:IKmeMWRS(2/2) AAS
具体的な回答のリンクにできてなかったんで張り直し
これの前半のほうやね
外部リンク:www.reddit.com
82: 2024/11/10(日)17:29 ID:x8h1RQEe(1/4) AAS
>>78-81
ありがとうございます

putsで文字化けしていたのは、コマンドラインでソースutf-8指定したら文字化けは直りました
だけど、引数が受け取れないですね

#include <stdio.h>

int main(int argc, char **argv) {
puts("テスト0😊");
for (int i = 1; i < argc; i++)
puts(argv[i]);
}

$ cl -utf-8 ConsoleApplication1.c
$ ./ConsoleApplication1.exe テスト1😊 テスト2😊
テスト0😊
???1??
???2??

$ ./ConsoleApplication1.exe テスト1😊 テスト2😊 > out.txt
$ cat out.txt
テスト0😊
???1??
???2??

(システムロケールEnglishでの環境です)
83: 2024/11/10(日)17:34 ID:x8h1RQEe(2/4) AAS
デバッグで確認したところ、引数のテスト1😊 テスト2😊は受け取りの時点(argv[i])でアルファベット以外の各コードポイントが?になってます
84: 2024/11/10(日)17:39 ID:x8h1RQEe(3/4) AAS
WindowsTerminal
MSYSTEM=UCRT64のMSYS2 bashです

$ echo テスト1😊 テスト2😊
テスト1😊 テスト2😊
85: 2024/11/10(日)17:45 ID:x8h1RQEe(4/4) AAS
$ gcc ConsoleApplication1.c
$ ./a.exe
テスト0😊

$ ./a.exe テスト1😊 テスト2😊
Error: Command line contains characters that are not supported
in the active code page (1252).

UTF8 everywhereは厳しいですかね?
86: 2024/11/10(日)19:10 ID:c/95e8WD(2/2) AAS
WindowsでワイドキャラクタってのはUTF16LEのことだよ?
87
(1): 2024/11/10(日)20:20 ID:+vLaBA7E(1) AAS
UTF-8 everywhere行けました

$ cat utf8.rc
#include "winuser.h"
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "utf8.manifest"

$ cat utf8.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:application>
<asmv3:windowsSettings xmlns="外部リンク:schemas.microsoft.com
<activeCodePage>UTF-8</activeCodePage>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>

$ cl -utf-8 ConsoleApplication1.c
$ mt.exe -nologo -manifest "utf8.manifest" -outputresource:"ConsoleApplication1.exe;#1"
$ ./ConsoleApplication1.exe テスト1😊 テスト2😊
テスト0😊
テスト1😊
テスト2😊

$ windres --input utf8.rc --output utf8.res --output-format=coff
$ gcc ConsoleApplication1.c utf8.res
$ ./a.exe テスト1😊 テスト2😊
テスト0😊
テスト1😊
テスト2😊
88: 2024/11/10(日)22:05 ID:ictCxOlF(1) AAS
>>87
下記の手続きを適用したってことなのかな?

Windows アプリで UTF-8 コード ページを使用する - Windows apps | Microsoft Learn
外部リンク:learn.microsoft.com
89: 2024/11/11(月)06:32 ID:bzvUbbzk(1) AAS
はい、検索して適当に拾ってきたのでxmlnsが微妙に違いますが同じことですね

MinGW64ツールチェーンではutf8.rcを経由してマニフェスト埋め込みしてますが
MSVCツールチェーンではその経路だとこうなります

$ rc utf8.rc
$ cl -utf-8 ConsoleApplication1.c utf8.res

ついでにPythonでもやってみました

$ cat ConsoleApplication1.py
import sys
print("テスト0😊")
for s in sys.argv[1:]:
print(s)

$ python313.exe ConsoleApplication1.py テスト1😊 テスト2😊
テスト0😊
テスト1😊
テスト2😊

環境変数がセットされてたので強制的に空にしても問題ないようです
$ PYTHONIOENCODING= PYTHONUTF8= python313.exe ConsoleApplication1.py テスト1😊 テスト2😊
テスト0😊
テスト1😊
テスト2😊
90
(1): 2024/11/11(月)11:04 ID:RXw/cl7Z(1) AAS
スレ汚しでしかない
91: 2024/11/11(月)13:27 ID:ZQtGCGPy(1) AAS
>>90
まあ、あの荒れそうな言語がユニコード引数でエラー出すからな
92
(1): 2024/11/15(金)23:15 ID:5CeogfbD(1) AAS
>>73
コードはユニコード
それをどうエンコーディングするかでUTF8やUTF16やUTF32などがある
ネットの標準がUTF8に統一されてなって
ファイルシステムでもUTF8に統一されつつあり
プログラム内部でもほとんどの用途はそのまま透過的にUTF8が有利に

固定長で扱うUTF32はムダすぎで
可変長のUTF8は後ろからでも切れ目を間違えことなく
表示幅問題はUTF8/UTF32関係なく発生するため
93
(1): 2024/11/17(日)17:51 ID:4RtrNUdf(1) AAS
>>92
>ファイルシステムでもUTF8に統一されつつあり
例を挙げてもらえますか?
94
(2): 2024/11/17(日)18:35 ID:hkK5KPG+(1) AAS
>>93
Linux distro, MacOS, android, iOS,...
挙げ始めたが最近のリリースだと Windows 以外のメジャーどころは全部じゃね?
95: 2024/11/18(月)23:18 ID:cZsx9Sbk(1/2) AAS
UTF-8は世界の誰もが好むわけではない。
どの民族もUTF-8の良いところと悪いところで悩んでいる
96: 2024/11/18(月)23:20 ID:cZsx9Sbk(2/2) AAS
>>94
勘違いしているけど、それらの製品でも区別して使う分けている。
97
(1): 2024/11/20(水)15:38 ID:84IcR/Q0(1) AAS
>>94
Linux (ext4) は、ファイルシステムとしてはエンコーディングは規定されてないのでは?
ディストロやユーザーがUTF-8を使ったりするのは自由だが
よってAndroidも同様

なんだAppleだけじゃんw
98
(1): 2024/11/20(水)16:37 ID:APWVo8Zw(1) AAS
>>97
そんなこと言いだしたら APFS も NTFS も単にバイト列を記録してるのに過ぎない。
それをOSやライブラリとしてどう解釈するかがファイルシステムの文字列。
だから linux kernel でなくて linux distro の問題。
(もっとも最近の Linux kernel はデフォルトで UTF-8 を指定するABIとかあって文字コードの変換したりするけど。別問題)
99
(1): 2024/11/21(木)12:47 ID:SUxxkxcm(1) AAS
UTF-8も完璧じゃないからな
100: 2024/11/21(木)14:20 ID:GU8mH0bt(1) AAS
>>99
キミの言う「完璧」とは一体...
101: 2024/11/21(木)15:46 ID:/Qk0W5ej(1) AAS
>>98
>そんなこと言いだしたら APFS も NTFS も単にバイト列を記録してるのに過ぎない。
いいえ
102: 2024/12/01(日)10:32 ID:RvSn0UL0(1) AAS
UTF8を推しているのは形を変えたASCII信者の老害。
103
(1): 2024/12/01(日)11:15 ID:iESkoZBr(1) AAS
刷新できていない古いシステムを除くと
文字コードはユニコードになったね

エンコーディングはネット上がUTF8なので
それをそのまま扱うのが一般的となったね
104: 2024/12/01(日)12:39 ID:8fzBRjbp(1) AAS
UTF-8 より完璧な文字コードって何だい?
ASCII と SJIS と UTF-8 はいいねしたい
105: 2024/12/01(日)20:40 ID:NnL6xx/e(1) AAS
なんか色々ごっちゃだな
106: 2024/12/02(月)03:35 ID:okRPdXGy(1) AAS
元のユニコードがクソだからなあ
結局どうにもならなくなって異体字セレクタとか出てくるし
107: 2024/12/02(月)13:49 ID:Zd1R379W(1) AAS
ishの出力ってSJISが標準?
utf-8板のish欲しいと思ったけど
-Dutf8付けてコンパイルしても結局SJIS出力だった
108: 2024/12/02(月)14:10 ID:n2j6TE+S(1) AAS
バイトデータで出力してるだけでエンコーディング関係ないような
UTF-8対応してもバイト単位でみたら7ビットしか情報持てないから損
効率気にしないならコード変換したらいい
半角カナが3バイトになるけどエラー訂正なんかは使える
109: 2024/12/03(火)12:52 ID:DZc+/1dr(1) AAS
たまたまSJISでデコードしたら人間に読める(かもしれない)ってだけで
只のバイナリデータだよね
110: 2024/12/04(水)23:36 ID:9B20CEFA(1) AAS
SJISとして不正なバイト列は含まれないはず
1-
あと 360 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.012s