转化Unicode字符为一个字符串包含其U + [六]表示(“\ u2030”)

Kalec:

我用java 8和国际化的工作。从我的理解,.properties文件(及随后的国际化代码)asumes这些文件是在“ISO-8859-1”的文件格式。因此,我在使用,不能在该文件格式表示的字符的麻烦。

从文件写入更改为一个OutputStreamWriter不会帮助,因为代码的另一端将无法反正读取这些字符。

我没有拿出一个解决方案,它的作品,但它是非常不雅。

StringBuilder utfRepresentation = new StringBuilder();
for (int index = 0; index < input.length(); index++) {
    if (!Charset.forName("ISO-8859-1").newEncoder().canEncode(input.charAt(index))) {
        utfRepresentation.append("\\u");
        utfRepresentation.append(Integer.toHexString(input.codePointAt(index)));
    } else {
        utfRepresentation.append(input.charAt(index));
    }
}

现在我需要做其他事情一样提取编码器,而不是做一个新的每一次,但我的问题完全是另一回事:

1)是否有转化的更清洁的方式进入\u2030
2)即使是什么这个U + 2030?UTF-8/16〜
3)是否有创建字符集/编码器的更好的办法?东西是不是静态的?我可以从文件中提取呢?或一个文件读/写?

乔普埃根:

作为一个历史的反常现象,是的.properties在ISO-8859-1,以便您可以使用StandardCharsets.ISO_8859_1(如果不是在Android)。

然而,你可能使用其它字符的u转义:\u2030其中一个应该明白,这是UTF-16的表示存储在一个单一的char(两个字节)。某些Unicode符号超过两个字节的限制,并且在一个“代理”对进行编码。

  • 从读取数据时PropertyResourceBundle,每次\uXXXX将自动解码
  • 你可以构建转换UTF-8模板文件到U型逃脱的.properties; 例如在行家。
  • 有时ListResourceBundle是更适合。它在Java中的数组,所有的Java源代码可以设置为UTF-8的国际项目。它的行为是不同的:所有的字符串会立即加载。

不过看样子你还想在代码中的.properties; 因此不在类路径上。

这里最好的似乎属性

对于该Properties班是理想的。它具有用于属性的XML变体(而不是键值线),默认使用UTF-8。而且传统的.properties可以读取和写入另一个(UTF-8)编码。


StringBuilder utfRepresentation = new StringBuilder();
for (int index = 0; index < input.length(); index++) {
    char ch = input.charAt(index);
    if (ch < 128) {
        utfRepresentation.append(ch);
    } else {
        utfRepresentation.append(String.format("\\u%04X", ch));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python 3,unicode转换,两个\ u0000作为一个字符

REGEXTRACT-匹配字符串中用特殊字符表示的一个字母

带有 CUDA 的 C++:如何将一个字节表示为一个字符或一组字符?

输出最后六个字符串

在另一个程序的python 3字符串中,ü是两个字符,即u和umlaut。为什么?

子字符串表示——长度或指向最后一个字节的指针?

给定一个字符串,波兰表示法中最长的WFF之一的长度是多少?

多少位表示一个字符,多少位表示一个字节?

Django-模板中由BoundField表示的对象属性:我只想要一个字符串

有没有检查一个字符串表示日期的有效途径?

是否在python分割方法返回一个包含\ u表示某些字符和一些如何摆脱呢?

编写一个接受 1 个参数的函数:一个字符串,s。它必须返回一个整数,表示 s? 中最长的神奇子序列的长度?

根据这六个字符分割字符串0102 **

从字符串中删除前六个字符(快速)

用21个字符转换成六进制字符串

'%' 表示任何字符,是否只有一个字符有任何特殊字符?

如何从Multimap的String表示中删除第一个和最后一个字符?

字符串包含另一个字符串

函数包含特定字符串返回一个字符串

d3选择元素,其类名称包含一个字符串

泰米尔语unicode字符串的最后一个字符

显示以十进制表示的巨大六进制字符串?

检查一个字符串是否包含Ruby中另一个字符串的所有字符

PHP-检查一个字符串是否包含另一个字符串中的任何字符

查找包含一个字符串但不包含另一个字符串的文件

包含一个字符串但不包含另一个字符串的正则表达式

找出一个字符串是否仅包含ASCII字符

包含方法,检查字符串前一个字符

一个字符串只包含某些字符