C++ 如何使用“转换字符串”â&引用;及Ã|&引用;到普通字符,如á&引用;及ã&引用;?C++;
所以我已经问了一些关于这个问题的问题,一周后我仍然没有解决这个问题 当我在聊天席输入一个单词时,我使用C++(不C++),我用另一个编码接收它,或者类似于:T。PE变成“T pe”。我很难做到的是,我可以把所有“a”奇怪的字符组合成一个数组,可以变成“Ã、等”,然后变成“a”,即使感觉不对,它也不起作用 在搜索了很多之后,似乎一个多字节字符串正试图被一个单字节字符串或类似的东西读取 在我得到这个该死的字符串之前,我不能改变任何东西,因为它来自服务器,我需要使它正确,所以我不能在代码上使用它 如果有人能帮助我转换C++,我会很高兴,因为我搜索了很多论坛和帖子,我没有找到一个在C++上使用这个方法。 真的谢谢 我尝试使用此函数,但遇到一个错误:C++ 如何使用“转换字符串”â&引用;及Ã|&引用;到普通字符,如á&引用;及ã&引用;?C++;,c++,encoding,C++,Encoding,所以我已经问了一些关于这个问题的问题,一周后我仍然没有解决这个问题 当我在聊天席输入一个单词时,我使用C++(不C++),我用另一个编码接收它,或者类似于:T。PE变成“T pe”。我很难做到的是,我可以把所有“a”奇怪的字符组合成一个数组,可以变成“Ã、等”,然后变成“a”,即使感觉不对,它也不起作用 在搜索了很多之后,似乎一个多字节字符串正试图被一个单字节字符串或类似的东西读取 在我得到这个该死的字符串之前,我不能改变任何东西,因为它来自服务器,我需要使它正确,所以我不能在代码上使用它 如果
std::string substr(std::string originalString, int maxLength)
{
std::string resultString = originalString;
int len = 0;
int byteCount = 0;
const char* aStr = originalString.c_str();
while(*aStr)
{
if( (*aStr & 0xc0) != 0x80 )
len += 1;
if(len>maxLength)
{
resultString = resultString.substr(0, byteCount);
break;
}
byteCount++;
aStr++;
}
return resultString;
}
错误是错误LNK2001:未解析的外部符号“public:class\u STL::basic\u string,class\u STL::allocator>\u thiscall kingMobile::KingChatFilter::substr(class\u STL::basic\u string,class\u STL::allocator>,int)”(?substr@KingChatFilter@kingMobile@@QAE?AV?$basic_string@DV?$char_traits@D@_STL@@V$allocator@D@2@@@U STL@@V34@H@Z)答案还是一样的。计算机中的“文本”是一个字节序列;它的解释需要从字节到字符的映射。ASCII就是这样一种映射,拉丁语-1和UTF-8也是如此 因此,
tãpe
不会变成tÃpe
。它们是查看相同字节的两种方式,分别是UTF-8和拉丁语-1
此外,您显示的错误并非来自您显示的代码。错误显然来自定义类或命名空间的代码
kingMobile
。删除它。那么我如何处理它呢?我应该在代码或IDE中设置些什么?@user3481379:我想你是疯了。您可能应该先学习C++基础知识-编译正确的文件完全与UTF 8无关,问题是我输入了真正的大项目,我不能改变编译编码…我不知道该做什么我在项目配置中将我的字符集从unicode改为多字节,但问题是persists@user3481379当前位置这两个更改一点帮助都没有。编译编码用于程序中的字符串文字,Unicode字符集影响
。