簡體   English   中英

可以忽略textbox.text編碼嗎?

[英]Can textbox.text encoding be ignored?

我有將代碼從textbox.text控件讀取到字節數組中的代碼。 它使用UTF8編碼,沒有任何問題。 例如,該代碼從文本框中讀取M個字節,並將其作為字節添加到輸出中。 一切正常。

回寫數據時,如果文本為非英語,則通常會出現問題。 例如,如果文本是中文字符南,請說幾次,對於文本框,似乎是0xE5、0x8D,0x97。

當數據寫回到文本框中時,例如,第一次寫操作以0xE5結尾,當下一批數據以0x8D 0x97開始寫回時,它將以某種方式轉換為0xEF 0xBF 0xBD。

在此處輸入圖片說明

我只是在使用Array.Copy。 沒什么特別的。 用英語,沒問題。 使用中文(以及日語)時,第一個寫入可以,但是第二個寫入具有其中一些“損壞的”字符。

該問題與讀/寫文本框無關。 問題是如何將文本轉換為字節並返回。 您沒有提供任何代碼,因此我的代碼不一定完全符合您的要求,但是可以將UTF-8字符串轉換為字節,您可以執行以下操作:

byte[] bytes = System.Text.Encoding.UTF8.GetBytes(textBox1.Text);

要將byte[]轉換為字符串:

textbox1.Text = System.Text.Encoding.UTF8.GetString(bytes);

如果您忽略編碼而僅使用ascii編碼,則在轉換為字節時將導致數據丟失。

還有一個與將中文轉換為byte[]有關的問題: 如何編碼和解碼殘破的中文/ Unicode字符?

首先,感謝您提供的信息。 我僅以中文為例。 該代碼將不知道該語言,因此不應該在乎。 可能是印地語或日語。 您使用的是將byte []轉換為字符串的方法。

發布問題后,我意識到代碼似乎可以正確處理數據,只是不寫回Textbox文本控件。 我不確定控件在做什么,也許它“檢測”語言或檢測到它不是UTF8並嘗試某種編碼。

但無論如何,我都將字節推遲回文本框中,直到最后,這似乎工作得很好。 也就是說,我一直使用Array.Copy(...)將字節加回到數組中,最后,如前所述,使用UTF8將整個內容寫回到文本框中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM