2013-10-24 38 views
0

嗨,我想将unicode值“\ u20BA”转换为土耳其等效字符串。有人可以帮我吗?如何在java中将unicode字符串转换为土耳其语?

我用下面的代码:

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(); 
} 
+0

你是什么意思转换的字符意味着(显然是U + 20BA TURKISH LIRA SIGN,引入Unicode 6.2)“土耳其语”还是“土耳其语字符串”?对于土耳其语中的一个词?该代码显示没有这种尝试。你的意思是转换为CP 1254字符编码吗?首先,它不包含U + 20BA。 –

回答

0

在Java String看作独立于任何字符编码的字符序列。因此,谈论改变String的编码是没有意义的。

只有在字符和字节之间进行转换时,字符编码才会起作用。这通常发生在读取或写入字符的Stream字符(例如文件)时。如果您没有明确指定编码,则使用平台编码。

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

0

关键在于您指定了单个字符的代码点,但是您将该代码点用作String对象的输入,所以Java将其解释为6个独立的字符。试试这个为您的具体问题:

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

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

+0

它不工作可以提供其他解决方案 – user2530663

+0

你在使用什么IDE,或者你在代码中做了些什么?我在发布之前测试了该片段;它打印土耳其里拉标志。 – Josh

+0

关于“六个不同的人物”的部分是错误的。 –

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 
? 
相关问题