所以我已经就这个问题提出了一些问题,一周之后我仍然没有解决这个问题。
我正在使用c ++而不是(c ++ 11)而当我在聊天框中输入一个单词时,我正在接收另一种编码或类似的东西:tãpe变成“tãpe”。我强硬的是,我想要制作一个所有“一个”奇怪的角色可以变成“â”等等然后然后变成“a”的阵列,甚至那感觉不对它没有用。
经过大量搜索后,似乎一个多字节字符串试图被单字节字符串或类似字符串引用。
在得到这个搞砸的字符串之前,我无法改变任何东西,因为它来自服务器,我需要使它正确,所以我无法在代码上使用它。
如果有人能帮助我在c ++中转换它,我会很高兴因为我搜索了很多论坛和帖子,而且我没有找到一种方法在c ++上使用它。
非常感谢
我尝试使用此功能,但我收到错误:
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 _STL :: basic_string,class _STL :: allocator&gt; __thiscall kingMobile :: KingChatFilter :: substr(class _STL :: basic_string,class _STL :: allocator&gt; ,int)“(?substr @ KingChatFilter @ kingMobile @@ QAE?AV?$ basic_string @ DV?$ char_traits @ D @ _STL @@ V?$ allocator @ D @ 2 @@ _ STL @@ V34 @ H @ Z)< / p>
答案 0 :(得分:0)
答案仍然是一样的。 &#34;文本&#34;在计算机中是一个字节序列;它的解释需要从字节到字符的映射。 ASCII就是这样的映射,就像Latin-1和UTF-8一样。
因此,tãpe
不会变成tãpe
。它们分别是两种查看相同字节的方式,分别是UTF-8和Latin-1。
此外,您显示的错误并非来自您显示的代码。错误显然来自定义类或命名空间kingMobile
的代码。删除它。