正常的ASCII是正确的,但韩语字符不是。
所以我做了一个简单的程序来读取一个UTF-8文本文件并打印内容。
ABC가나다
#include <fstream>
#include <iostream>
#include <string>
#include <iterator>
#include <streambuf>
const char* hex(char c) {
const char REF[] = "0123456789ABCDEF";
static char output[3] = "XX";
output[0] = REF[0x0f & c>>4];
output[1] = REF[0x0f & c];
return output;
}
int main() {
std::cout << "File(ifstream) : ";
std::ifstream file("test.txt");
std::string buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
for (auto c : buffer) {
std::cout << hex(c)<< " ";
}
std::cout << std::endl;
std::cout << buffer << std::endl;
//String literal
std::string str = "ABC가나다";
std::cout << "String literal : ";
for (auto c : str) {
std::cout << hex(c) << " ";
}
std::cout << std::endl;
std::cout << str << std::endl;
return 0;
}
File(ifstream) : 41 42 43 EA B0 80 EB 82 98 EB 8B A4
ABC媛?섎떎
String literal : 41 42 43 B0 A1 B3 AA B4 D9
ABC가나다
输出表示,字符在字符串、文字和文件中的编码是不同的。
使用UTF-8编码“abc
"\x41\x42\x43\xEA\xB0\x80\xEB\x82\x98\xEB\x8B\xA4"
所以你得到的文件内容是正确的。问题出在源文件编码上。您不允许在字符串文本中使用非ASCII符号,您应该在字符串文本中加上u8前缀以获得UTF-8文本:
u8"ABC가나다"
在这一点上,我假设您使用的是Windows,否则就不会有任何编码问题。您必须将终端字符集更改为UTF-8:
chcp 65001
我有字节数组,它放在InputStreamReader中,用它做一些操作。 JVM有默认的cp1252编码,但是我转换成字节数组的文件有utf-8编码。此外,这个文件有德语umlauts。当我把字节数组放在InputStreamReader中时,java会将元音解码为错误的符号。例如,ürepression为。我试着把“utf-8”和charset.forname(“utf-8”).newdeco
这里发生了什么?为什么当我使用utf-8读取文件时,它会在控制台中输出问号? 这是一个最小的工作示例: 其中<代码>输入。md包含:(UTF-8编码) 运行上述代码会产生 为什么我得到<代码>� 当我使用UTF-8读取文件时?这尤其奇怪,因为文件是用UTF-8编码的。 更新:我的控制台设置为“UTF-8”: 以下是从输入文件中提取的字符串中每个字符的十六进制值的屏幕截图: 以下是十六进制隔离的更好
任何帮助都很感激..谢谢..!!!
问题内容: 我需要阅读一个以GBK编码的文本文件。Go编程语言中的标准库假定所有文本均以UTF-8编码。 如何读取其他编码的文件? 问题答案: 以前(如在较早的答案中所述),“简单”的方法是使用需要cgo并包装iconv库的第三方程序包。由于许多原因,这是不希望的。值得庆幸的是,有一段时间以来,仅使用Go Authors提供的软件包(不是在主要软件包中,而是在Go子存储库中),就有了一种上乘的Go
问题内容: 我正在尝试读取UTF-8编码的txt文件,其中包含一些土耳其字符。基本上,我已经编写了一个基于轴的Web服务,该服务读取此文件并将输出作为字符串发送回。不知何故我无法正确读取字符。代码非常简单,如下所述: 这是turkish.txt的内容,仅一行 我得到标准输出 请在这里提出我在做什么错。 问题答案: 您似乎正在正确地将文件数据从UTF-8字符串解码为UTF-16字符串。 执行从UTF
我有一个编码问题。 我有数百万个文本文件需要为语言数据科学项目进行解析。每个文本文件都编码为UTF-8,但我刚刚发现其中一些源文件的编码不正确。 例如我有一个中文文本文件,编码为UTF-8,但文件中的文本如下所示: 当我使用Python检测此中文文本文件的编码时: Chardet告诉我文件编码为UTF-8: UnicodeDammit还告诉我该文件编码为UTF-8: 同时,我知道这不是UTF-8,