我正在尝试将一个utf8内容读取到char *,我的文件没有任何DOM,所以代码是直的,(文件是unicode punctuation)
char* fileData = "\u2010\u2020";
我看不出单个unsigned char 0> 255可以包含值0的字符> 65535所以我必须遗漏一些东西。
...
std::ifstream fs8("../test_utf8.txt");
if (fs8.is_open())
{
unsigned line_count = 1;
std::string line;
while ( getline(fs8, line))
{
std::cout << ++line_count << '\t' << line << L'\n';
}
}
...
那么如何将utf8文件读入char *,(甚至是std :: string)
答案 0 :(得分:0)
好吧,您正在正确地将文件读入std::string
并且std::string
支持UTF8,可能是您的控制台 *无法显示非ASCII字符。
基本上,当字符代码页大于CHAR_MAX/2
时,您只需使用许多字符表示此字符。
如何以及多少个字符?这就是编码的全部意义。
例如,UTF32会将每个字符,ASCII和非ASCII显示为4个字符。因此&#34; 32&#34; (每个字节为8位,4 * 8 = 32)。
未提供有关您使用的操作系统的任何其他信息,我们无法就您的程序如何显示该文件的行提供建议。
*或更确切地说,标准输出可能会被实现为控制台文本。