#include #include #include int IsUTF8(const char* buffer, size_t size) { // UTF-8のBOMチェック if (size >= 3 && buffer[0] == (char)0xEF && buffer[1] == (char)0xBB && buffer[2] == (char)0xBF) { return 1; // BOMがあればUTF-8 } // BOMがない場合、マルチバイト文字の存在を確認 for (size_t i = 0; i < size; ++i) { unsigned char ch = buffer[i]; if ((ch & 0x80) && ((ch & 0xC0) != 0xC0)) { return 1; // マルチバイト文字が含まれている場合 } } return 0; // マルチバイト文字が含まれていない場合 } int main() { // ファイルパス const char* filePath = "test.txt"; // ファイルを読み込みモードでUTF-8で開く FILE* file; if (fopen_s(&file, filePath, "r, ccs=UTF-8") != 0) { printf("ファイルを開けませんでした。\n"); return 1; } // ファイルサイズの取得 fseek(file, 0, SEEK_END); long fileSize = ftell(file); rewind(file); // ファイル内容を読み込むためのバッファを確保 char* buffer = (char*)malloc(fileSize); if (buffer == NULL) { fclose(file); printf("メモリを確保できませんでした。\n"); return 1; } // ファイル内容をバッファに読み込む fread(buffer, 1, fileSize, file); fclose(file); // UnicodeかANSIかを判別 if (IsUTF8(buffer, fileSize)) { wprintf(L"UTF-8 ファイルです。\n"); } else { wprintf(L"ANSI ファイルです。\n"); } // メモリの解放 free(buffer); return 0; }