如何在java中将unicode字符串转换为土耳其语?

时间:2013-10-24 07:41:59

标签: java android unicode

嗨,我想将unicode值“\ u20BA”转换为土耳其语等效字符串。请有人帮帮我吗?

我使用了以下代码:

try {
  String string = "\u20BA";
  System.out.println(string + " " + string.toLowerCase());
  // Locale.setDefault(new Locale("tr"));
  // Locale tr = new Locale("TR","tr");
  byte[] converttoBytes = string.toLowerCase().getBytes("UTF-8");
  string = new String(converttoBytes, "Cp1254");
  System.out.println(string + " " + string.toLowerCase());
} catch (Exception e) {
 e.printStackTrace();
}

3 个答案:

答案 0 :(得分:0)

将Java中的String视为独立于任何字符编码的字符序列。因此,谈论改变String的编码是没有意义的。

只有在字符和字节之间进行转换时才会出现字符编码。当您从/ Stream个字节(例如文件)读取或写入字符时,通常会发生这种情况。如果未明确指定编码,则使用平台编码。

如果遇到困难,请确保正确设置平台编码或明确指定正确的编码。

答案 1 :(得分:0)

关键是您要为单个字符指定代码点,但是您使用该代码点作为String对象的输入,因此Java将其解释为6个单独的字符。请针对您的具体问题尝试此操作:

StringBuilder sb = new StringBuilder();
sb.append('\u20BA');
System.out.println(sb.toString());

请注意,Unicode值使用单引号 - 单个字符值。正如您可能已经猜到的那样,您可以继续以这种方式附加其他Unicode值来创建字符串......但是,正如已经提到的,这可能不是您正在处理的任何潜在问题的最佳答案。

答案 2 :(得分:0)

lira sign(u + 20BA)是在2012年创建的,CP1254ISO-8859-9字符集都没有包含里拉标志。

这可以在Linux上使用以下命令集进行验证(u + 20BA实际上编码为utf8中的3个以下字节:E2 82 BA):

$ echo -e "\xE2\x82\xBA"
₺
$ echo -e "\xE2\x82\xBA" | iconv --from utf8 --to cp1254
iconv: illegal input sequence at position 0
$ echo -e "\xE2\x82\xBA" | iconv --from utf8 --to iso88599
iconv: illegal input sequence at position 0
$ echo -e "\xE2\x82\xBA" | iconv --from utf8 --to cp1254//TRANSLIT
?
$ echo -e "\xE2\x82\xBA" | iconv --from utf8 --to iso88599//TRANSLIT
?