我们有ASP.NET应用程序,它运行世界各地的不同客户端。在这个应用程序中,我们有每种语言的字典。在字典中,我们使用小写字母,有时我们会在代码中将其大写为排版原因。
var greek= new CultureInfo("el-GR");
string grrr = "Πόλη";
string GRRR = grrr.ToUpper(greek); // "ΠΌΛΗ"
问题是:
...如果你使用大写字母 然后他们必须这样:f.e。 ΠΟΛΗ而不是像ΠΌΛΗ,所有人都一样 用大写字母写的其他单词
因此,通常可以在.NET中正确地使用大写的希腊语单词吗?或者我应该为希腊大写编写我自己的自定义算法吗?
他们如何在希腊解决这个问题?
答案 0 :(得分:4)
我怀疑如果el-GR
没有做你想做的事,你将不得不编写自己的方法。如果这就是你所需要的,那么你认为你不需要全长creating a custom CultureInfo。这很好,因为这看起来非常繁琐。
我建议你做的是阅读this Michael Kaplan blog post以及他可以找到的任何其他相关内容 - 他多年来一直致力于写关于i18n和语言问题的文章,他的评论是我的第一个观点对于Windows上的任何此类问题。
答案 1 :(得分:2)
我对ASP.Net了解不多,但我知道如何用Java做这件事。
如果字符是Unicode,我只需要对ToUpper
的输出进行一些简单的替换后处理,一个是将\ u038C(Ό
)转换为\ u039F({{1} }或\ u0386(Ο
)到\ u0391(Ά
)。
从希腊/科普特代码页(\ u0370到\ u03ff)的外观来看,只需要更改几个字符(6或7)。
答案 2 :(得分:2)
答案 3 :(得分:1)
如何用正确的字符替换错误的字符:
/// <summary>
/// Returns the string to uppercase using Greek uppercase rules.
/// </summary>
/// <param name="source">The string that will be converted to uppercase</param>
public static string ToUpperGreek(this string source)
{
Dictionary<char, char> mappings = new Dictionary<char, char>(){
{'Ά','Α'}, {'Έ','Ε'}, {'Ή','Η'}, {'Ί','Ι'}, {'Ό','Ο'}, {'Ύ','Υ'}, {'Ώ','Ω'}
};
source = source.ToUpper();
char[] result = new char[source.Length];
for (int i = 0; i < result.Length; i++)
{
result[i] = mappings.ContainsKey(source[i]) ? mappings[source[i]] : source[i];
}
return new string(result);
}