[C#] 簡體亂碼轉換
回應問題
http://social.technet.microsoft.com/Forums/de-DE/3d32bccd-cae9-467c-8362-20d25c64a36a
表單畫面
完整程式碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string Big5toGB2312(string strBig5)
{
StringBuilder sb = new StringBuilder();
byte[] unknow = Encoding.GetEncoding("Big5").GetBytes(strBig5); // 繁體中文 (Big5)
return Encoding.GetEncoding("gb2312").GetString(unknow); // 簡體中文 (GB2312)
}
internal const int LOCALE_SYSTEM_DEFAULT = 0x0800;
internal const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000;
internal const int LCMAP_TRADITIONAL_CHINESE = 0x04000000;
[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern int LCMapString(int Locale, int dwMapFlags, string lpSrcStr, int cchSrc, [Out] string lpDestStr, int cchDest);
/// <summary>
/// 將簡體中文字元轉換成繁體中文
/// </summary>
/// <param name="strGB2312"></param>
/// <returns></returns>
private string GB2312translateBig5(string strGB2312)
{
String tTarget = new String(' ', strGB2312.Length);
int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_TRADITIONAL_CHINESE, strGB2312, strGB2312.Length, tTarget, strGB2312.Length);
return tTarget;
}
private void txtSource_TextChanged(object sender, EventArgs e)
{
this.txtGB.Text = Big5toGB2312(this.txtSource.Text);
this.txtBig5.Text = GB2312translateBig5(this.txtGB.Text);
}
}
}
執行結果
下載
https://dotblogsfile.blob.core.windows.net/user/chou/1306/2013626144654147.zip