gpt4 book ai didi

Java UTF-8 到 ASCII 的转换及补充

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:00:54 31 4
gpt4 key购买 nike

我们在输入中接受 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();
}

问题是如何用它们的增补替换所有通过上述规范化方法获得的德语升号 s(ß、Đ、đ)和其他字符(如果是 ß,增补可能是“ss”,而在case od Đ supplement 将是“D”或“Dj”)。

是否有一些简单的方法可以做到这一点,而无需数百万次 .replaceAll() 调用?

例如:Đonardan = Djonardan,Blaß = Blass 等等。

我们可以用空格替换所有“有问题的”字符,但希望避免这种情况以使输出尽可能类似于输入。

感谢您的回答,

博佐

最佳答案

您想使用 ICU4J .它包括 com.ibm.icu.text.Transliterator 类,它显然可以满足您的需求。

关于Java UTF-8 到 ASCII 的转换及补充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2545200/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com