文字コード総合スレ part15 (90レス)
文字コード総合スレ part15 http://mevius.5ch.net/test/read.cgi/tech/1723861080/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: デフォルトの名無しさん [] 2024/08/17(土) 11:18:00.01 ID:VHa7+i59 文字コードについて語り合うスレです http://mevius.5ch.net/test/read.cgi/tech/1723861080/1
71: デフォルトの名無しさん [sage] 2024/11/09(土) 23:09:52.15 ID:OjNPz0/0 >>70 xxxx がコードポイント(code point) U+xxxx がコードポイント表記 (code point notation) とかで良いんじゃね 知らんけど http://mevius.5ch.net/test/read.cgi/tech/1723861080/71
72: デフォルトの名無しさん [sage] 2024/11/09(土) 23:59:10.46 ID:aDTWwhb+ 0xBEEFとBEEFは表現は違うけどどちらも16進表記で指してる値は同じ 10進表記の48879も同じ値を指す Unicodeのコードポイントってのは値を指してる だからなんやねんだけど http://mevius.5ch.net/test/read.cgi/tech/1723861080/72
73: デフォルトの名無しさん [] 2024/11/10(日) 02:50:29.80 ID:NcxfIIMm >>70 「U+」の部分はUTF-8だという意味 http://mevius.5ch.net/test/read.cgi/tech/1723861080/73
74: デフォルトの名無しさん [sage] 2024/11/10(日) 03:16:28.77 ID:c/95e8WD >>73 コードポイントとエンコードの区別が付かない男の人って http://mevius.5ch.net/test/read.cgi/tech/1723861080/74
75: デフォルトの名無しさん [] 2024/11/10(日) 12:29:54.80 ID:AfmJKCJ3 >>68 ≒ >>73 これはひどい http://mevius.5ch.net/test/read.cgi/tech/1723861080/75
76: デフォルトの名無しさん [sage] 2024/11/10(日) 16:10:50.24 ID:DLtuPbgG Cスレの通りにやって文字出力したら化けるんだけど、文字コード民的な正しい対処法は? ちゃんとソースファイルがUTF-8なのは確認した https://mevius.5ch.net/test/read.cgi/tech/1721137434/350 #include <windows.h> int main(void) { LPTSTR lptStr = TEXT("テスト😊"); printf("%s\n", lptStr); } http://mevius.5ch.net/test/read.cgi/tech/1723861080/76
77: デフォルトの名無しさん [sage] 2024/11/10(日) 16:20:39.17 ID:DLtuPbgG win32でのAやW、charとwchar_tの事は分かっていて Linux他でのクロスコンパイルを考えてwchar_tは使わずにUTF-8 everywhereで通しつつ puts("テスト😊"); が文字化けしない様にしたい 特定システムロケールは仮定せず ターミナルではchcp 65001してある 場合です http://mevius.5ch.net/test/read.cgi/tech/1723861080/77
78: デフォルトの名無しさん [sage] 2024/11/10(日) 16:47:24.57 ID:ZReNrF9P 端末がUTF-8非対応なのはないとして 出力をファイルへリダイレクトするかダンプして 想定どおりのバイト列か確認してみては? http://mevius.5ch.net/test/read.cgi/tech/1723861080/78
79: デフォルトの名無しさん [] 2024/11/10(日) 16:48:25.69 ID:IKmeMWRS C詳しくないんで、正しい対処法は知らんけど、どこの通りで手元で出力できた。 https://www.reddit.com/r/C_Programming/comments/1adv86p/how_do_i_print_a_penguin_emoji_in_c_language/?rdt=48269 http://mevius.5ch.net/test/read.cgi/tech/1723861080/79
80: デフォルトの名無しさん [sage] 2024/11/10(日) 16:48:33.88 ID:qC3Ky4ZL 分かってるならなんでLPTSTRから変換せずに使ってんの http://mevius.5ch.net/test/read.cgi/tech/1723861080/80
81: デフォルトの名無しさん [] 2024/11/10(日) 16:51:53.80 ID:IKmeMWRS 具体的な回答のリンクにできてなかったんで張り直し これの前半のほうやね https://www.reddit.com/r/C_Programming/comments/1adv86p/comment/kk5vdm1/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button http://mevius.5ch.net/test/read.cgi/tech/1723861080/81
82: デフォルトの名無しさん [sage] 2024/11/10(日) 17:29:55.58 ID:x8h1RQEe >>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での環境です) http://mevius.5ch.net/test/read.cgi/tech/1723861080/82
83: デフォルトの名無しさん [sage] 2024/11/10(日) 17:34:04.13 ID:x8h1RQEe デバッグで確認したところ、引数のテスト1😊 テスト2😊は受け取りの時点(argv[i])でアルファベット以外の各コードポイントが?になってます http://mevius.5ch.net/test/read.cgi/tech/1723861080/83
84: デフォルトの名無しさん [sage] 2024/11/10(日) 17:39:37.64 ID:x8h1RQEe WindowsTerminal MSYSTEM=UCRT64のMSYS2 bashです $ echo テスト1😊 テスト2😊 テスト1😊 テスト2😊 http://mevius.5ch.net/test/read.cgi/tech/1723861080/84
85: デフォルトの名無しさん [sage] 2024/11/10(日) 17:45:01.75 ID:x8h1RQEe $ 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は厳しいですかね? http://mevius.5ch.net/test/read.cgi/tech/1723861080/85
86: デフォルトの名無しさん [sage] 2024/11/10(日) 19:10:18.70 ID:c/95e8WD WindowsでワイドキャラクタってのはUTF16LEのことだよ? http://mevius.5ch.net/test/read.cgi/tech/1723861080/86
87: デフォルトの名無しさん [sage] 2024/11/10(日) 20:20:44.02 ID:+vLaBA7E 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="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> <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😊 http://mevius.5ch.net/test/read.cgi/tech/1723861080/87
88: デフォルトの名無しさん [sage] 2024/11/10(日) 22:05:14.87 ID:ictCxOlF >>87 下記の手続きを適用したってことなのかな? Windows アプリで UTF-8 コード ページを使用する - Windows apps | Microsoft Learn https://learn.microsoft.com/ja-jp/windows/apps/design/globalizing/use-utf8-code-page http://mevius.5ch.net/test/read.cgi/tech/1723861080/88
89: デフォルトの名無しさん [sage] 2024/11/11(月) 06:32:20.07 ID:bzvUbbzk はい、検索して適当に拾ってきたので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😊 http://mevius.5ch.net/test/read.cgi/tech/1723861080/89
90: デフォルトの名無しさん [] 2024/11/11(月) 11:04:13.71 ID:RXw/cl7Z スレ汚しでしかない http://mevius.5ch.net/test/read.cgi/tech/1723861080/90
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.514s*