文字コード総合スレ part15 (470レス)
上下前次1-新
68(1): 2024/11/08(金)18:20 ID:y8v+DuF6(1) AAS
>>66
そもそもUTF-8はその表記が正式な表記だから、表記の名称が存在しない。
69: 2024/11/09(土)19:37 ID:otPYdJdQ(1) AAS
天皇に名字がないようのなものか? って違うか
70(2): 2024/11/09(土)20:43 ID:UMsfYHki(1) AAS
回答ありがとう。表記法や表現自体には特には名前ないんか。
正規表現のグループに名前を付けようとして
「(?<UnicodeCodePoint>(?<Prefix>U\+)(?<Hex>[0-9A-F]{4,6}))」
みたいにしたんだけど、
「U+HHHH」全体をコードポイントって呼んでいいのか、
「HHHH」部分だけがコードポイントと呼べるものなのか、
っていう疑問が湧いたんだよね。
調べたらすぐ分かるかと思ったら全然分からなくてモヤモヤしてた。
71: 2024/11/09(土)23:09 ID:OjNPz0/0(1) AAS
>>70
xxxx がコードポイント(code point)
U+xxxx がコードポイント表記 (code point notation)
とかで良いんじゃね
知らんけど
72: 2024/11/09(土)23:59 ID:aDTWwhb+(1) AAS
0xBEEFとBEEFは表現は違うけどどちらも16進表記で指してる値は同じ
10進表記の48879も同じ値を指す
Unicodeのコードポイントってのは値を指してる
だからなんやねんだけど
73(3): 2024/11/10(日)02:50 ID:NcxfIIMm(1) AAS
>>70
「U+」の部分はUTF-8だという意味
74: 2024/11/10(日)03:16 ID:c/95e8WD(1/2) AAS
>>73
コードポイントとエンコードの区別が付かない男の人って
75: 2024/11/10(日)12:29 ID:AfmJKCJ3(1) AAS
>>68 ≒ >>73
これはひどい
76: 2024/11/10(日)16:10 ID:DLtuPbgG(1/2) AAS
Cスレの通りにやって文字出力したら化けるんだけど、文字コード民的な正しい対処法は?
ちゃんとソースファイルがUTF-8なのは確認した
2chスレ:tech
#include <windows.h>
int main(void)
{
LPTSTR lptStr = TEXT("テスト😊");
printf("%s\n", lptStr);
}
77: 2024/11/10(日)16:20 ID:DLtuPbgG(2/2) AAS
win32でのAやW、charとwchar_tの事は分かっていて
Linux他でのクロスコンパイルを考えてwchar_tは使わずにUTF-8 everywhereで通しつつ
puts("テスト😊");
が文字化けしない様にしたい
特定システムロケールは仮定せず
ターミナルではchcp 65001してある
場合です
78(1): 2024/11/10(日)16:47 ID:ZReNrF9P(1) AAS
端末がUTF-8非対応なのはないとして
出力をファイルへリダイレクトするかダンプして
想定どおりのバイト列か確認してみては?
79(1): 2024/11/10(日)16:48 ID:IKmeMWRS(1/2) AAS
C詳しくないんで、正しい対処法は知らんけど、どこの通りで手元で出力できた。
外部リンク:www.reddit.com
80(1): 2024/11/10(日)16:48 ID:qC3Ky4ZL(1) AAS
分かってるならなんでLPTSTRから変換せずに使ってんの
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
上下前次1-新書関写板覧索設栞歴
あと 373 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.010s