在C#中显示unicode文本

时间:2009-09-03 01:58:31

标签: c# winforms unicode internationalization unicode-string

我的应用程序在TextBox和LinkLabel上显示英文,日文和中文字符。 目前,我检查是否有unicode字符并将字体更改为MS Mincho,否则将其保留在Tahoma中。

现在MS Mincho正确显示日语,但对于中文我必须使用Sim Sun.我如何区分这两者?

如何确保无论字体/语言如何都能正确显示unicode文本?

3 个答案:

答案 0 :(得分:4)

如果每个文本都有unicode字符,使用支持unicode的字体应该适合你(例如Arial Unicode MS)。

答案 1 :(得分:2)

无论字体和语言如何,都无法确保正确显示unicode文本,因为没有可以呈现所有可能的unicode字符的单一字体。您必须选择一种可以显示需要渲染的unicode字符的字体。

答案 2 :(得分:2)

C#中的所有字符串都是Unicode。英语(拉丁语),日语和中文代码点位于不同的代码点范围内。

我认为你有两个选择:

  • 查找包含所有三种语言中所有代码点字符的Unicode字体。

  • 尝试猜测语言并选择包含该语言代码点字符的字体。

对于选项2,您可以查看Unicode charts以找出不同代码点的位置,并扩展算法以猜测语言。

Hiragana的示例:

bool IsHiragana(char ch)
{
    return (ch >= '\u3040') && (ch <= '\u309f');
}

bool IsHiragana(string s)
{
    return s.Count(IsHiragana) > 0;
}