boz*_*ozo 10 java character-encoding special-characters
我们在输入上接受UTF-8字符串中的各种国家字符,并且我们需要在输出上将它们转换为ASCII字符串以用于某些遗留用途.(我们不接受中文和日文字符,只接受欧洲语言)
我们有一个小实用程序来摆脱所有的变音符号:
public static final String toBaseCharacters(final String sText) {
if (sText == null || sText.length() == 0)
return sText;
final char[] chars = sText.toCharArray();
final int iSize = chars.length;
final StringBuilder sb = new StringBuilder(iSize);
for (int i = 0; i < iSize; i++) {
String sLetter = new String(new char[] { chars[i] });
sLetter = Normalizer.normalize(sLetter, Normalizer.Form.NFC);
try {
byte[] bLetter = sLetter.getBytes("UTF-8");
sb.append((char) bLetter[0]);
} catch (UnsupportedEncodingException e) {
}
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
问题是如何更换所有德国尖锐s(ß,Đ,đ)和其他通过上述标准化方法的角色,以及它们的补充(如果是ß,补充可能是"ss",如果是od©补充可以是"D"或"Dj").
有没有一些简单的方法可以做到这一点,没有数百万的.replaceAll()调用?
例如:Đonardan= Djonardan,Blaß= Blass等等.
我们可以用空的空格替换所有"有问题"的字符,但是希望避免这种情况使输出尽可能类似于输入.
谢谢您的回答,
博佐
有没有一些简单的方法可以做到这一点,而无需数百万次 .replaceAll() 调用?
如果你只支持欧洲、拉丁语系的语言,大约 100 种就足够了;这绝对是可行的:获取Latin-1 Suplement和Latin Extended-A的Unicode 图表并开始聚会。:-)String.replace
| 归档时间: |
|
| 查看次数: |
7197 次 |
| 最近记录: |