2

有谁知道任何简单的方法来英语化一个字符串?目前,在我们的系统中,我们正在对“无效”字符进行替换,如下所示:

        ret = ret.Replace("ä", "ae");
        ret = ret.Replace("Ä", "Ae");
        ret = ret.Replace("ß", "ss");
        ret = ret.Replace("ç", "c");
        ret = ret.Replace("Ç", "C");
        ret = ret.Replace("Ž", "Z");

这里的问题是,当我们在其他国家/地区(土耳其、俄罗斯、匈牙利……)开展业务时,我们发现有很多角色在此过程中无法转换。

有没有人知道任何类型的解决方案可以让我们不依赖于“无效”字符表?

此外,如果有帮助,我们正在使用 C# 进行编码。:)

谢谢!


编辑:

作为对一些评论的回应,我们的系统确实支持完整的 unicode 字符集……但是,我们集成到的其他系统(例如卡处理器)不支持。:(

4

4 回答 4

2

查看此问题及其答案,并查看有关将变音字符转换为其 ASCII 等效字符的博客条目。

于 2009-12-08T20:14:13.837 回答
1

作为修改后问题的答案(邮件服务器仅支持用户名中的字母数字字符):

让用户选择他们自己的用户名,只允许使用字母数字字符。他们可能最清楚如何“英语化”它。

于 2009-12-08T20:54:48.997 回答
1

我为一个无耻的插件道歉,但我无法抗拒。我曾经写过一个 Python 模块,它完全符合文章作者的需要:

https://github.com/revl/anglicize

因为 Python 几乎和伪代码一样可读,并且模块只有大约 125 行长,所以用 C# 重写它相对容易。

以下是模块根据原始帖子的输入生成的内容:

$ echo 'ä Ä ß ç Ç Ž' | anglicize
a A ss s S S

如您所见,“ß”按要求替换为“ss”,而“ç”、“Ç”和“Ž”分别替换为“s”、“S”和“S”,可能是因为那些是英语中的语音等价物。

至于“ä”和“Ä”,音译“ae”和“Ae”可能比“a”和“A”更好用。如果那里的语言学家确认这是正确的做法,我将很乐意更改音译表。

The module can transliterate the whole input text at once, or it can process input data in chunks. The documentation is in the README file that comes with the module.

于 2017-07-07T16:31:53.127 回答
0

仅仅因为一个字母看起来与传统的英文字母相似,并不等于它。不只是支持 Unicode 和您的观众选择使用的任何字符的商业案例是什么?

于 2009-12-08T20:38:18.120 回答