2013-02-11 44 views
0

我有這樣的代碼來編碼Unicode字符的方式:使用ASCII

' 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」介紹的DB,實際上被保存,但作爲「Celpekéy」 。這是因爲我使用的是,這些字符不受ASCII支持。

考慮:

更新

你知道任何技巧,讓我仍然使用ASCII編碼保存Unicode字符?

您是否認爲使用ASCII編碼是不可能的?

感謝您的幫助。

回答

0

它看起來像你想Encoding.Unicode.GetBytes或UTF8版本,而不是ASCII版本。

+0

謝謝@Andrew,抱歉不要在原始問題上提及它,但另一面是「黑匣子」,並且執行該更改不起作用。 – Coyolero 2013-02-11 18:54:49

+0

@Coyolero - 你永遠不會使用ASCII編碼得到想要的結果。如果不是您的編碼選擇,其他問題一定會導致問題。 – 2013-02-11 19:10:12

+1

@ChrisDunaway - 你是對的,所以我認爲如果不改變對方的編碼就不能修復。 – Coyolero 2013-02-11 20:23:34

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'

使用特定於您所在國家/地區的代碼。