代码之家  ›  专栏  ›  技术社区  ›  Ron

可以忽略textbox.text编码吗?

  •  0
  • Ron  · 技术社区  · 7 年前

    当数据被写回时,如果文本是非英语语言,通常会出现问题。例如,如果文本是中文字符,则重复几次,对于文本框,似乎是0xE5、0x8D、0x97。

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  1
  •   Ashkan Mobayen Khiabani    7 年前

    该问题与文本框的读/写无关。问题是如何将文本转换为字节并返回。您尚未提供任何代码,因此我的代码不能完全符合您的要求,但要将UTF-8字符串转换为字节,您可以执行以下操作:

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

    转化 byte[]

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

    如果忽略编码而只使用ascii编码,则在转换为字节时会导致数据丢失。

    还有一个问题与将中文转换为中文有关 字节[] How to encode and decode Broken Chinese/Unicode characters?

        2
  •  0
  •   Ron    7 年前

    首先,感谢您提供的信息。我只是以中文为例。代码将不知道该语言,因此不应在意。它可以是印地语或日语。我使用的是将字节[]转换为字符串。

    在我发布了这个问题之后,我意识到代码似乎正确地处理了数据,只是没有写回Textbox文本控件。我不确定控件在做什么,也许它“检测”了语言,或者检测到它不是UTF8并尝试某种编码。

    但是在任何情况下,我都会推迟将字节写回文本框,直到最后,这似乎很好。也就是说,我一直使用array.Copy(…)将字节添加回数组,最后使用UTF8将整个内容写回文本框,如您所述。