读取字符串无法读取到中文,俄语,或者日语。会 显示成乱码,只能显示数字和字母。 这个是我读取的代码。那么我如何才能去读的到中文或者别的语言
template<typename T>
std::string read_string(uint64_t address)
{
char buffer[70];
RedByte(address, &buffer, sizeof(buffer));
std::string nameString;
for (int i = 0; i < 70; i += 2) {
if (buffer[i] == 0)
break;
else
nameString += buffer[i];
};
return nameString;
}
为啥用for循环转换啊?直接nameString = address就行了啊。
而且这里还有风险,循环每次i+=2,万一字符串长度是奇数,岂不跳过字符串结束符了?
内容读取和显示是两件事,这段代码读取内容无论是哪种语言都没有问题。显示乱码跟显示时的编码有关系
你得事先弄清楚RedByte(ReadByte?)
函数返回字的符串是什么编码的,然后在根据编码进行必要的转换。最好都统一成UTF8编码。
nameString = new std::string(buffer)不就可以了吗?
不能一个字节一个字节地读,得直接读
gets(buffer);
电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
没人会吗。就是读取EXE程序内存里的的一个名字如果中文就乱码日语也乱码唯一能识别的就是数字和字母。