C#でWideCharToMultiByteで中国語を変換して問題を解決する方法
C# では、文字コードの変換に System.Text.Encoding クラスを使用します。WideCharToMultiByte 関数の変換では、Encoding クラスの GetEncoding メソッドで、ソースとターゲットの符号化を指定してから、GetBytes メソッドで文字列をバイト配列に変換し、最後に、GetString メソッドでバイト配列を文字列に変換します。
サンプルコードを以下に示します。
using System;
using System.Text;
public class Program
{
public static void Main()
{
string chineseText = "你好";
Encoding srcEncoding = Encoding.Unicode;
Encoding dstEncoding = Encoding.GetEncoding("gb2312");
byte[] srcBytes = srcEncoding.GetBytes(chineseText);
byte[] dstBytes = Encoding.Convert(srcEncoding, dstEncoding, srcBytes);
string result = dstEncoding.GetString(dstBytes);
Console.WriteLine(result);
}
}
本例中、元のエンコーディングはUnicode(wide char)エンコーディング、目標のエンコーディングはgb2312(マルチバイト)エンコーディングです。まず、GetBytesメソッドを通じて、文字列をバイト配列に変換し、次にEncoding.Convertメソッドを通じて、バイト配列を元のエンコーディングから目標のエンコーディングに変換し、最後にGetStringメソッドを通じて、バイト配列を文字列に変換します。
このコードを実行すると、「こんにちは」という文字列が出力されます。