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メソッドを通じて、バイト配列を文字列に変換します。

このコードを実行すると、「こんにちは」という文字列が出力されます。

bannerAds