我在内存中有一些 UTF-8 字符串(这是更大系统的一部分),它们基本上是欧洲国家的地方名称。我想要做的是将它们写入文本文件。我在我的 Linux 机器(Fedora)上。因此,当我将这些名称字符串(字符指针)写入文件时,文件将以扩展的 ASCII 格式保存。
现在我将此文件复制到我需要将这些名称加载到 mySQL DB 的 Windows 机器上。当我在记事本++上打开文本文件时,它再次默认编码为ANSI。但我可以选择编码为 UTF-8,除了以下 3 个字符之外,几乎所有字符看起来都符合预期:- Ő、ő 和 ű。它们在文本中显示为 Ő、ő 和 ű。
有没有人对可能出了什么问题有任何想法。我知道这些不是扩展 ASCII 符号的一部分。但是我将其写入文件的方式类似于:
// create out file stream
std::ofstream fs("sample.txt");
// loop through utf-8 formatted string list
if(fs.is_open()) {
for(int i = 0; i < num_strs; i++) {
fs << str_name; // unsigned char pointer representing name in utf-8 format
fs << "\n";
}
}
fs.close();
即使使用 ú 和 ö 和 ß 这样的字符,一切看起来都很好。问题仅在于上述 3 个字符。对此有何想法/建议/评论?谢谢!
例如,像“Gyömrő”这样的字符串显示为“Gyömrű”。