这与this question类似,但我特别需要知道如何转换为ISO-8859-1格式,而不是UTF-8。将组合字符集转换为ISO 8859-1
简短的问题:我需要一个字符结合diaereses转换为拉丁-1相当(如果存在)。 (UTF-8:[cc] [88]和另一个UTF代码点U + 0308),但我的数据库只支持ISO-8859-1(例如Latin-1 )。由于字符/合并字段是“分解”的,因为字节序列[cc] [88]作用于前面的字符,因此我不能将其转换为ISO-8859-1,因为前面的字符可能没有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"
,但它只是不能编码合成diaereses,而不是看到,它可以转换为U + 00F6/[C3] [BC]。有没有一个库可以检测到一个字符后跟组合的字符串可以映射到现有的ISO-8859-1字符? (最好用Java)
Upvoted造成的。我将发布我的例子作为更明确示例的另一个答案。 – Devin 2014-09-23 23:52:17