1

我的访问数据库中存储了希腊文本。由于某种原因,它没有出现在希腊语中——而是使用其他符号。

例如Ãëþóóá而不是Γλώσσα

我可以像这样在我的 Windows 应用程序中转换它:

Dim encoder As Encoding = Encoding.GetEncoding(1253)
Dim valueInBytes As Byte() = encoder.System.IO.File.ReadAllBytes(lanuageFilePath)
languageValue = encoder.GetString(valueInBytes)

但是,我现在需要在我的网络应用程序中使用这些值。但是该ReadAllBytes方法对我不可用。我尝试过使用GetBytes,但这似乎不会产生相同的结果。

Dim encoder As Encoding = Encoding.GetEncoding(1253)
Dim valueInBytes As Byte() = encoder.GetBytes(languageValue)
languageValue = encoder.GetString(valueInBytes)

我究竟做错了什么?

4

1 回答 1

1

第一个似乎与变量中的文本无关,您从文件中读取。

Dim encoder As Encoding = Encoding.GetEncoding(1253)
Dim valueInBytes As Byte() = System.IO.File.ReadAllBytes(languageValue)
languageValue = encoder.GetString(valueInBytes)

大多数框架都应该支持 ReadAllBytes,因此在服务器上应该没有问题。

其他代码似乎在做完全不同的事情。您正在将字符串转换为字节并以相同的编码再次返回,要使其正常工作,您需要找出认为是哪种编码访问并使用它进行编码。但是,它可能仍然无法在往返过程中幸存下来,因为访问可能正在对 unicode 进行一些规范化。

Dim encoder As Encoding = Encoding.GetEncoding(1253)
Dim accessencoder As Encoding = Encoding.GetEncoding({{accesses encoding numer here}})
Dim valueInBytes As Byte() = accessencoder.GetBytes(languageValue)
languageValue = encoder.GetString(valueInBytes)
于 2013-05-31T17:07:52.587 回答