我有一個字符串在VB.net可能包含類似以下:混合編碼爲字符串
這是一個0x000020AC符號
這是UTF-32編碼爲歐根據這篇文章符號http://www.fileformat.info/info/unicode/char/20ac/index.htm
我想這個轉換成
這是在VB.net一個€符號
我使用UnicodeEncoding()類試過(Framework 2.0的,因爲我修改遺留應用程序)
當我使用這個類來編碼,然後解碼我仍然回到原來的字符串。
我預計UnicodeEncoding會識別已編碼的部分,而不是對其進行編碼。但似乎並非如此。
我現在有點失落,至於如何將混合編碼字符串轉換爲普通字符串。
背景:將Excel電子表格保存爲CSV時,ascii範圍外的任何內容都將轉換爲?。所以我的想法是,如果我可以讓我的客戶端搜索/替換諸如歐元符號之類的幾個字符爲編碼字符串,例如0x000020AC。然後我希望在插入到SQL數據庫之前將這些編碼部分轉換回真實符號。
我已經試過這樣的功能
Public Function Decode(ByVal s As String) As String
Dim uni As New UnicodeEncoding()
Dim encodedBytes As Byte() = uni.GetBytes(s)
Dim output As String = ""
output = uni.GetString(encodedBytes)
Return output
End Function
這是基於MSDN上的例子在http://msdn.microsoft.com/en-us/library/system.text.unicodeencoding.aspx
這可能是因爲我的是如何工作的一個完整的錯誤認識VB.net。在C#中,我可以簡單地使用諸如「\ u20AC」之類的轉義字符。但VB.net中不存在這樣的事情。
我會使用[Regex.Replace](http://msdn.microsoft.com/en-us/library/ht1sxswy(V = VS.80)的.aspx)來匹配'0X ...'並使用自定義匹配評估器將匹配的值轉換回字符。 – Heinzi 2012-08-02 10:49:00
[如何在VB.Net字符串文字中表示Unicode Chr代碼?](http://stackoverflow.com/questions/3144053/how-to-represent-unicode-chr-code-in-vb-net-字符串文字) – 2012-08-02 11:27:05