C言語でファイルに書き込むと文字化けが発生する際の解決方法を教えてください
文字ファイルへの書き込みで文字化けが発生する原因は、ファイルのエンコーディングと書き込み内容のエンコーディングが異なっていることが一般的です。
解決策は以下のとおりです。
- ファイルを書き込む前に、ファイルの文字エンコーディングを確認する必要があります。例えば、ファイルが UTF-8 で保存されているのであれば、以下のコードでファイルを開くことができます:
FILE *file = fopen("file.txt", "w, ccs=UTF-8");
- ファイルに書き込む内容がファイルのエンコードと一致していることを確認します。書き込む内容がUTF-8で保存されている場合は、次のコードを使用してファイルに書き込むことができます。
const char *content = "你好世界";
fwrite(content, sizeof(char), strlen(content), file);
- ネイティブの日本語で言い換えてください。1 つだけのオプションが必要です:iconv
#include <iconv.h>
// 创建转换句柄
iconv_t cd = iconv_open("UTF-8", "GBK");
// 定义输入和输出缓冲区
char *input = "你好世界";
size_t input_len = strlen(input);
char output[1024];
size_t output_len = sizeof(output);
// 进行编码转换
iconv(cd, &input, &input_len, &output, &output_len);
// 写入文件
fwrite(output, sizeof(char), sizeof(output) - output_len, file);
// 关闭转换句柄
iconv_close(cd);
上記の方法はC言語でファイルに書き込む際に文字化けを防ぐことができます。