如何在我的网络应用程序中读取数据库中的希腊字符?

时间:2013-05-31 16:24:00

标签: vb.net web-applications encoding translation

我的希腊语文本存储在我的访问数据库中。出于某种原因,它不会出现在希腊语中 - 它会使用其他符号。

e.g。 Ãëþóóá而不是Γλώσσα

我可以在我的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)

我做错了什么?

1 个答案:

答案 0 :(得分: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)