0

我有这个代码:

' Connects to the server
Dim _tcpClient As New System.Net.Sockets._tcpClient
_tcpClient.Client.Connect(server, port)
' Open network stream
Dim _headerToSend As String = "POST evpost HTTP/1.0"... ' CityName = Čelpěkéy
Dim _networkStream As NetworkStream = _tcpClient.GetStream
Dim bytesToSend As Byte() = Encoding.ASCII.GetBytes(_headerToSend)
' Send the text to tcp server
_networkStream.Write(bytesToSend, 0, bytesToSend.Length)

我正在尝试将值“ Čelpěkéy ”保存在数据库中,实际上已保存为“ Celpekéy ”。这是因为我正在使用Encoding.ASCII这些字符并且 ASCII 不支持这些字符。

注意事项:

  • 另一面是“黑匣子”,所以如果我更改编码,它将不起作用(例如Encoding.Unicode)。
  • DB 中的列是nvarchar。如果我直接修改此字段,则正确保存值“Čelpěkéy”。
  • 需要的字符是:http ://webdesign.about.com/od/localization/l/blhtmlcodes-cz.htm 。

更新

你知道有什么技巧可以让我仍然使用 ASCII 编码来保存 Unicode 字符吗?
或者
您是否认为使用 ASCII 编码不可能做到这一点?

谢谢你的帮助。

4

2 回答 2

0

看起来你想要Encoding.Unicode.GetBytes的是 UTF8 版本,而不是 ASCII 版本。

于 2013-02-11T18:41:53.043 回答
0
Public Function DECODE(ByVal x As String) As String
        If x IsNot Nothing Then
            Dim b As Byte() = Encoding.GetEncoding(1250).GetBytes(x)
            Return Encoding.ASCII.GetString(b)
        Else
            Return x
        End If
End Function

1250 是东欧(罗马尼亚)的代码。所以'Ceauşescu'将被翻译成'Ceausescu'

使用特定于您所在国家/地区的代码。

于 2013-02-12T11:04:15.797 回答