gpt4 book ai didi

java - 将组合分音符转换为 ISO 8859-1

转载 作者:行者123 更新时间:2023-11-30 07:06:04 28 4
gpt4 key购买 nike

这类似于 this question ,但我特别需要知道如何转换为 ISO-8859-1 格式,而不是 UTF-8。

简短的问题:我需要一个将分音符组合转换为等效的 Latin-1(如果存在)的字符。

更长的问题:我有包含组合分音符的德语字符串(UTF-8:[cc][88] AKA UTF 代码点 U+0308),但我的数据库仅支持 ISO-8859-1(例如 Latin-1) .因为字符/组合分音符被“分解”,我不能只是“转换”为 ISO-8859-1,因为字节序列 [cc][88] 作用于前面的字符,在 ISO 中可能没有相应的字符-8859-1。

我试过这段代码:

import java.nio.charset.Charset;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;

//ü has combining diaereses
String s = "für"
Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");

ByteBuffer inputBuffer = ByteBuffer.wrap(s.getBytes());

// decode UTF-8
CharBuffer data = utf8charset.decode(inputBuffer);

// encode ISO-8559-1
ByteBuffer outputBuffer = iso88591charset.encode(data);
byte[] outputData = outputBuffer.array();

isoString = new String(outputData);

//isoString is "fu?r"

但它只是无法对组合分音符进行编码,而不是看到它可以转换为 U+00F6/[c3][bc]。是否有库可以检测后跟组合分音符的字符何时可以映射到现有的 ISO-8859-1 字符? (最好使用 Java)

最佳答案

编码前需要规范化。

使用the Normalizer class转换为分解形式,然后进行编码。

关于java - 将组合分音符转换为 ISO 8859-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004769/

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