我有一个"windows1255“编码的字符串,有没有什么安全的方法可以把它转换成"UTF-8”
字符串,反之亦然?
一般来说,有没有一种安全的方法(意味着数据不会被损坏)来在
Java中的编码?
str.getBytes("UTF-8");
new String(str,"UTF-8");如果原始字符串没有编码为"UTF-8“,数据会被破坏吗?
发布于 2013-02-03 19:12:02
在Java语言中,您不能将String对象正确地编码为除UTF-16之外的任何其他格式-因为这是规范定义的那些对象的唯一编码。当然,你可以做一些不合适的事情,比如在一个char[]中放入1252个值,然后用它创建一个字符串,但是事情很快就会出错。
您可以使用各种不同的方式对字符串进行byte[]编码,您可以使用接受字符集的构造函数和代码中的getBytes将它们转换为字符串或字符串。
因此,您可以使用字符串作为中间层进行转换。我不知道在JDK中有什么方法可以进行直接转换,但在实践中中间转换的成本可能不会太高。
关于往返转换-通常情况下,您不能在编码之间进行转换而不会丢失数据。只有几种编码可以处理Unicode字符的全谱(例如UTF族、GB18030等),而许多传统字符集只编码一小部分。您不能在不丢失数据的情况下安全地往返于这些字符集,除非您确定输入属于可表示集。
https://stackoverflow.com/questions/14671735
复制相似问题