将Unicode编码字符读入我的应用程序

时间:2012-03-12 08:54:05

标签: c# unicode

我有一个应用程序,运行时将正确显示所有Unicode编码的字符(好的就是这样)。这些数据将存储在数据库文件中。我写了一个应用程序来读取所有这些,但它无法按预期正确读取。日语,中文,韩语等语言都很好,只有越南语,德语荷兰语等语言,任何在字符顶部都有点或笔画的语言都无法简洁地显示出来。谢谢你的帮助。

[更新]

非常感谢,我认为我不再需要安装东方和亚洲语言了,因为它们已经在我的计算机系统中了。只有它们无法在我创建的应用程序中显示,但在使用数据库存储和检索它们的应用程序中显示得很好。例如,很久以前,当yahoo messenger是单语时,只能显示英语,但稍后会添加其他dll以正确显示其他语言的其他字符。不再需要设置来阅读其他语言来处理dll。假设当前信使可以通过键盘的不同输入读取英语,日语,中文,我的名为messengerreader的应用程序是读取这些输入。信使对这些输入工作正常,而我的信使阅读器无法弄清楚我上面提到的一些语言。我现在应该做些什么才能让它们全部起作用?我感谢任何帮助。

[再次更新]

好的,一个简单的例子,我现在可以在我的应用程序上思考,我需要在原始应用程序中正确显示为“LêSao”的用户名中读取。我的应用程序在'L'后显示一些奇怪的字符。

public struct Username
{
   public string username;
}

IEnumerable<Username> Getuser(string tableName)
{
   Datatable dt=ReadDB(tableName);
   List<Username> lst=new List<Username>();

   lst.Add(new Username(){username=dt.Rows[0]['username']});
   return lst.ToList();
}

1 个答案:

答案 0 :(得分:0)

可以转出用户名字符串的十六进制,将这样的方法添加到

public string UserNameAsHexDump  {
        get
        {

            char[] ca = username.ToCharArray();

            string output = "";
            foreach (char c in ca)
            {
                output += string.Format("{0} - {1:X4}\r\n", c, (uint)c);
            }

            return output;

        }
    }

将结果复制出来让我们看看原始数据,“LêSao”样本给出:

L - 004C
ê - 00EA
  - 0020
S - 0053
a - 0061
o - 006F

从那个SO可能会给你一个答案