感谢您添加带有问题答案的编辑。我有来自旧数据库的数据,其中数据以无法正确显示的韩语编码存储。
在玩了几个小时将数据转换为不同编码的代码之后,我遇到了你的问题。我进行了代码页 1252 到代码页 949 的转换,然后我开始从数据库条目中获取有效的韩语单词。
我的代码上下文来自一个 .NET 表单 Web 应用程序,我在下面包含了 Page_load 函数,以提供有关如何从一种编码转换为另一种编码的示例代码:
protected void Page_Load(object sender, EventArgs e)
{
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["DictionaryConnection"].ToString();
using (SqlConnection conn = new SqlConnection(strConn))
{
conn.Open();
string strSQL = "Select top(100) * from Parts";
SqlCommand command = new SqlCommand(strSQL, conn);
SqlDataReader sdr = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(sdr);
sdr.Close();
StringBuilder sbOut = new StringBuilder();
sbOut.Append("<table border=\"1\">");
sbOut.Append("<tr>");
foreach (DataColumn dc in dt.Columns)
{
sbOut.Append("<th>" + dc.ColumnName + "</th>");
}
sbOut.Append("</tr>");
foreach (DataRow dr in dt.Rows)
{
sbOut.Append("<tr>");
foreach (DataColumn dc in dt.Columns)
{
string strOut = "";
if (dr[dc] != null)
{
if (dc.ColumnName=="Part_h")
{
int euckrCodepage = 949;//949;//51949;
System.Text.Encoding originalEncoding = System.Text.Encoding.GetEncoding(1252);
System.Text.Encoding euckr = System.Text.Encoding.GetEncoding(euckrCodepage);
StringBuilder sbEncoding= new StringBuilder();
sbEncoding.Append("RAW: " + dr[dc].ToString() + "<br />");
byte[] rawbytes= originalEncoding.GetBytes(dr[dc].ToString());
string s = euckr.GetString(rawbytes);
sbEncoding.Append("STRING AS "+euckr.EncodingName+": " + s + "<br />");
strOut = sbEncoding.ToString();
}
else
{
strOut = dr[dc].ToString();
}
}
sbOut.Append("<td>" + strOut + "</td>");
}
sbOut.Append("</tr>");
}
sbOut.Append("</table>");
conn.Close();
lblText.Text = sbOut.ToString();
}
}