(13个答案)3天前关闭。我必须从文件中读取一个字符串,并在应用程序的Text字段中显示相应的unicode表示。例如,我从文件中读取字符串"e13a",并希望在"文本"字段中显示相应的"\ue13a"字符。是否有办法获得理想的行为?我已经尝试过在文件中直接转义字符串,但总是获得原始字符串而不是unicode表示
ogsagwnx1#
Character.toString( Integer.parseInt( "e13a" , 16 ) )
请参见运行at Ideone.com的代码。
将输入字符串解析为hexadecimal数字,基数为16。转换为十进制数字,基数为10。这个数字代表一个code point,这个数字永久地分配给Unicode中定义的144,000多个字符中的每一个。码位的范围从零到一百万多一点,其中大部分都是未分配的。
String input = "e13a" ; int codePoint = Integer.parseInt( input , 16 ) ;
示例化一个String对象,该对象的内容是由该码位标识的字符。
String
String output = Character.toString( codePoint ) ;
char
char类型从Java 2开始就基本上被打破了,从Java 5开始就被继承了。作为一个16位值,char在物理上无法表示大多数字符。要使用单个字符,请使用上面所示的代码点整数。
nfs0ujit2#
经过大量的尝试和搜索,我发布了这个问题。发布后不久,我发现了一个比我预期的更琐碎的解决方案:转换后的字符串为:
String converted = String.valueOf((char) Integer.parseInt(unicodeString,16));
其中“unicodeString”是我从文件中读取的字符串。
2条答案
按热度按时间ogsagwnx1#
TL;医生
请参见运行at Ideone.com的代码。
代码点
将输入字符串解析为hexadecimal数字,基数为16。转换为十进制数字,基数为10。
这个数字代表一个code point,这个数字永久地分配给Unicode中定义的144,000多个字符中的每一个。码位的范围从零到一百万多一点,其中大部分都是未分配的。
示例化一个
String
对象,该对象的内容是由该码位标识的字符。
避免
char
char
类型从Java 2开始就基本上被打破了,从Java 5开始就被继承了。作为一个16位值,char
在物理上无法表示大多数字符。要使用单个字符,请使用上面所示的代码点整数。
nfs0ujit2#
经过大量的尝试和搜索,我发布了这个问题。发布后不久,我发现了一个比我预期的更琐碎的解决方案:
转换后的字符串为:
其中“unicodeString”是我从文件中读取的字符串。