2

私は VB.net の復習としてプログラムをまとめていますが、入力文字列を UTF-16LE に変換してから Base64 に変換するという、とにかく多くのことをしなければならないことを実行させたほうがよいと考えました。

さて、PHPでは、次のようにできます:

<?php
$UTF8_String = "example string"; 
$UTF16_String = mb_convert_encoding($UTF8_String,"UTF-16LE","UTF-8");
$base64_encoded = base64_encode($UTF16_String);
echo $base64_encoded;

甘くてシンプル。

...しかし、vb.netでは、文字列を取得する方法がわかりません

Dim strInput = inputBox.Text

それを UTF-16LE に変換し (UTF-16LE である必要があります)、結果の文字列を Base64 に変換します。

ありがとうございました!

編集: Gserg と Steven のコードはどちらも同様にうまく機能し、テキストを変換する 2 つの方法を確認するのに役立ちます。1 つは指定可能なエンコーディングを使用し、もう 1 つは Unicode を使用します。現時点では、スティーブンの答えはより完全なので、受け入れます。ありがとうございました!

4

2 に答える 2

3

残念ながら、.NET の UTF-16LE は単に "Unicode" (コード ページ ID 1200) と呼ばれます。したがって、UTF-16LE に使用する適切なエンコーディング オブジェクトはEncoding.Unicode. 最初のステップは、次のように、文字列の UTF-16LE 表現のバイト配列を取得することです。

Dim bytes() As Byte = Encoding.Unicode.GetBytes(inputBox.Text)

Convert次に、次のようにクラスを使用して、これらのバイトを Base64 文字列に変換できます。

Dim base64 As String = Convert.ToBase64String(bytes)

このEncodingクラスには、いくつかの最も一般的なエンコーディング オブジェクト ( UnicodeUTF8、 などUTF7) のパブリック プロパティがあります。ただし、将来、あまり一般的でないエンコーディング オブジェクトを使用する必要がある場合は、Encoding.GetEncodingメソッドを使用して取得できます。このメソッドは、コード ページ ID または名前のいずれかを取ります。サポートされているコード ページの一覧は、MSDN のこのページの表にあります。

于 2014-01-09T14:54:31.870 に答える
1
Dim b = Text.Encoding.GetEncoding("UTF-16LE").GetBytes(inputBox.Text)
Dim base64 = Convert.ToBase64String(b)
于 2014-01-09T14:42:14.840 に答える