次のようなものを含む可能性のある文字列が VB.net にあります。
これは 0x000020AC シンボルです
これは、この記事http://www.fileformat.info/info/unicode/char/20ac/index.htmによると、ユーロ記号の UTF-32 エンコーディングです。
これを次のように変換したい
これは€記号です
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
これは、 http: //msdn.microsoft.com/en-us/library/system.text.unicodeencoding.aspx の MSDN の例に基づいています。
これが VB.net でどのように機能するかを完全に誤解している可能性があります。C# では、"\u20AC" などのエスケープ文字を簡単に使用できます。しかし、VB.net にはそのようなものは存在しません。