因此,我試圖對用C#編寫的某些軟件進行修改,但我並不是真正的開發人員。代碼從客戶端讀取數據並從中獲取數據。我看到的問題是,當你使用非英文字符的客戶端的值時,它變得亂七八糟。有問題的代碼是:從C#中的原始TCP流獲取unicode字符串
public static string ReadNT(BinaryReader stream)
{
ret = "";
byte addByte = 0x00;
do {
addByte = ReadByte(stream);
if (addByte != 0x00)
ret += (char)addByte;
} while (addByte != 0x00);
return ret;
}
至於我可以告訴它會通過流,並通過一個轉換的東西爲一個字符一個得到的字符串。這個問題與unicode/utf8不兼容。有沒有辦法將其轉換爲一個字符串與utf8值?
你應該檢查出UTF8Encoding類http://msdn.microsoft.com/en-us/library/system.text.utf8encoding(v=vs.110).aspx –
從我的(儘管有限)瞭解unicode,我認爲你不能保證每個角色的大小。因此,像這樣一次抓取一個字節將需要很多解決方法。您最好的選擇可能是一次讀取整個流,然後解碼。 – Dan
@Dan對於UTF8,你需要在一個類型中讀取它的一個字節,因爲它是可變長度的。 –