所以我已經問了一些關於這個問題的問題,一週後我仍然沒有解決這個問題。如何將字符串轉換爲「Ã」和「Ã|」到「á」和「ã」等正常字符? C++
我正在使用C++而不是(C++ 11),當我在聊天框中鍵入一個單詞時,我以另一種編碼或類似方式接收它:tãpe變成「t?pe」。我強硬的一點是,我可以將所有「a」奇怪的字符組成一個數組,然後轉變爲「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:無法解析的外部符號「公用:類_STL :: basic_string的,類_STL :: allocator> __thiscall kingMobile :: KingChatFilter :: substr(class _STL :: basic_string,class _STL :: allocator>,int)「(?substr @ KingChatFilter @ kingMobile @@ QAE?AV?$ basic_string @ DV?$ char_traits @ D @ _STL @@ V $ $ allocator @ D @ 2 @@ _ STL @@ V34 @ H @ Z)
那麼我該如何處理呢?我應該在代碼或IDE中設置一些東西? – user3481379
@ user3481379:我認爲你已經過了頭。你可能應該首先學習C++基礎 - 編譯正確的文件與UTF-8完全無關 – MSalters
問題是我進入了一個非常大的項目,我不能改變編譯編碼......我不知道該怎麼辦 – user3481379