C言語
WindowsのcssはUTF-8に対応している。fopen、_wfopen | Microsoft Learn C言語のワイド文字入出力 — MSVCRTの場合 | 雑記帳fopen.cで、と書く。 こうなり、こうなり、 UTF-8出力できた。UTF-8出力できた。 (UTF-8でもfprintfだとassert出たので、fwprintfに…
Windowsのfopenにもccsがあるが、類似機能であり、内容は結構違う。fopen、_wfopen | Microsoft Learn C言語のワイド文字入出力 — MSVCRTの場合 | 雑記帳fopen.cで、 /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ #include <locale.h> /* ロケール </locale.h></stdio.h>…
"Japanese_Japan.932"ロケールをセットしてみる。setlocale, _wsetlocale | Microsoft Learnsetlocale.cで、こうすると、 こうなり、こうなり、 test1.txtはShift_JISで文字化けしないし、test1.txtはShift_JISで文字化けしないし、 test2.txtもShift_JISで…
setlocaleがファイル入出力に及ぼす影響について試す。setlocale, _wsetlocale | Microsoft Learnまずは、"C"ロケールでファイル出力してみる。fprintfとfwprintfでファイル出力。 fprintfはShift_JIS出力。fprintfはShift_JIS出力。 fwprintfでは文字化けし…
setlocaleも、LinuxとWindowsで違う。setlocale, _wsetlocale | Microsoft Learn C/C++での日本語文字列の扱い、どうすればよいか - minus9d's diary 標準出力にユニコードを出力させる - わびさびサンプルソースLinuxでは、 /* ヘッダファイルのインクルー…
Windowsのwprintfはややこしい。printf、_printf_l、wprintf、_wprintf_l | Microsoft Learn 書式指定構文: "printf" および "wprintf" 関数 | Microsoft Learn ワイド文字(C言語) - 超初心者向けプログラミング入門 iooiau blog: Visual C++ の wprintf の…
Windows + VisualC++だと、ワイド文字出力の方法に違いがある。マルチバイト文字とワイド文字 | Microsoft Learn 書式指定構文: "printf" および "wprintf" 関数 | Microsoft Learnwide_character.cで、 /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標</stdio.h>…
mbstowcsで、マルチバイト文字列からワイド文字列へ変換する。Man page of MBSTOWCSmbstowcs.cで、こう書く。 こうなる。こうなる。Sample/c/mbstowcs/mbstowcs/src/mbstowcs at master · bg1bgst333/Sample · GitHub
wcstombsで、ワイド文字列からマルチバイト文字列へ変換する。Man page of WCSTOMBSwcstombs.cで、こう書く。 第1引数をNULLにすると、必要なバッファサイズ(終端NULL文字含まない)を返すのだが、manにはなぜかはっきりとそう書いてない。 実行すると、こう…
mbtowcで、マルチバイト文字からワイド文字へ変換する。Man page of MBTOWCmbtowc.cで、test1.txtは、前回のUTF-8で'あ'だけのファイル。 test2.txtも、前回のEUC-JPで'あ'だけのファイル。 こうなるこうなる。 ここでは、mb2_ptrはEUC-JPロケールセットして…
wctombで、ワイド文字からマルチバイト文字へ変換する。Man page of WCTOMBwctomb.cで、ロケールがUTF-8とEUC-JPしか入ってないので、その2つに変換する。 実行するとこうなり、実行するとこうなり、 test1.txtはUTF-8test1.txtはUTF-8。 test2.txtはEUC-JP…
UTF-32BEもできる。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 開くと開くと、 認識できない認識できない。 サクラエディタなら、文字コードセットを12001のUTF-32BEにすればいける。サクラエディタなら、文字コードセットを12001のUTF-32BEに…
UTF-32LEもできるが、ちょっといろいろめんどくさい。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 バイナリモードで開くのと、BOMも長くなるし、fwriteで書き込むのがポイント。 開くと開くと、 認識できない認識できない。 サクラエディタなら…
ccs=ISO-2022-JPとすると、JISで入出力される。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 test.txtを開くとtest.txtを開くと、 iso-2022-jpiso-2022-jpで、 TeraPadでJISとわかったTeraPadでJISとわかった。Sample/c/fopen/ccs_ISO-2022-JP/sr…
ccsにShift_JISも指定できる。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 test.txtを開くとtest.txtを開くと、 sjisだとわかるしsjisだとわかるし、 TeraPadもSJISだと言っている。TeraPadもSJISだと言っている。Sample/c/fopen/ccs_Shift_JIS/…
ccsにUTF-16BEも指定できる。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 test.txtを開くとtest.txtを開くと、 文字化けしているが文字化けしているが、 最近のメモ帳はUTF-16BEにも対応してるので、確認できる。最近のメモ帳は、UTF-16BEにも対…
これまでワイド文字出力と言いながら、ワイド文字テキストファイルとして出力できていなかったが、ccsにUTF-16LEも指定できるので、これでWindowsのUnicodeテキストファイルとして出力する。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 始めにUT…
ccs=EUC-JPにすると、EUC-JPで書き出される。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 test1.txtを開くと、 UTF-8になっているとする。UTF-8になっているとする。 実行すると、test2.txtが生成されて、実行すると、test2.txtが生成されて、 …
ccsをUTF-8にすれば、UTF-8で書き出される。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 test.txtを開くとtest.txtを開くと、 UTF-8UTF-8。Sample/c/fopen/ccs_UTF-8/src/fopen at master · bg1bgst333/Sample · GitHub
fopenでccsに文字コードを指定することで、その文字コードで読み書きできる。 これだとsetlocaleが不要になる。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 fwprintfのワイド文字出力でEUC-JPで書き出す。 カンマ(',')とスペース(' ')とかの間は…
fgetwsで、ファイルからのワイド文字入力。Man page of FGETWSfgetws.cで、こう書く。 こうなる。こうなる。Sample/c/fgetws/fgetws/src/fgetws at master · bg1bgst333/Sample · GitHub
fputwsで、指定文字列のワイド文字ファイル出力。Man page of FPUTWSfputws.cで、こう書く。 実行して、test.txtを見ると、実行して、test.txtを見ると、 EUC-JPで出てるEUC-JPで出てる。Sample/c/fputws/fputws/src/fputws at master · bg1bgst333/Sample ·…
fwscanfで、指定のストリームからワイド文字入力できる。fwscanf(3): convert formatted wide-char input - Linux man page test.txtに"EUC-JP"でこれを書いておく。test.txtに"EUC-JP"でこれを書いておく。fwscanf.cで、こう書く。 読み込めた読み込めた。S…
ロケールが"ja_JP.UTF-8"なら、文字コードがUTF-8のファイルとして書き込まれる。C言語のワイド文字入出力 | 雑記帳setlocale.cで、こう書くと、 test1.txtを開いたらtest1.txtを開いたら、 EUC-JPEUC-JP。 test2.txtを開いたらtest2.txtを開いたら、 UTF-8U…
setlocaleでロケールを"ja_JP.EUC-JP"にセットしてワイド文字をファイル出力すると、文字コードがEUC-JPのファイルとして書き込まれる。C言語のワイド文字入出力 | 雑記帳setlocale.cで、こう書くと、 こう実行できてこう実行できて、 test.txtは"EUC-JP"に…
fwprintfで、指定のストリームにワイド文字出力できる。Man page of WPRINTF fwprintf | Programming Place Plus C言語編 標準ライブラリのリファレンスfwprintf.cで、こう書くと、 test.txtが出力されてるtest.txtが出力されてる。 UTF-8で"あいうえお"UTF…
wscanfはscanfのワイド文字対応関数。wscanf(3): convert formatted wide-char input - Linux man page読み込んだ文字列を、ワイド文字列としてワイド文字配列に格納。 wscanf.cで、こう書くと、 読み込める。読み込める。Sample/c/wscanf/wscanf/src/wscanf…
wchar_t配列を引数に取るワイド文字対応関数wprintfもある。Man page of WPRINTF 【C言語】ワイド文字の使い方【日本語】wprintf.cで、char型文字もchar型文字配列も出力できる。 (char型文字は"%c"なのに、char型文字配列は"%hs"なのは注意!) 出力できた出…
ワイド文字を変数に格納するには、wchar_t型変数を定義する必要がある。【C言語】ワイド文字の使い方【日本語】wchar_t.cで、wchar_t型を使うには、wchar.hのインクルードが必要。 格納できた格納できた。Sample/c/wchar_t/wchar_t/src/wchar_t at master · …
ワイド文字を出力してみる。 実は、printfでもワイド文字を出力できる。【C言語】ワイド文字の使い方【日本語】wide_character.cで、文字リテラルや文字列リテラルの前に'L'を付ける。 printfでは、文字なら書式指定子%lc、文字列なら書式指定子%lsを指定す…