我需要将UTF-8商标标志转换为ISO Latin 1,并将其保存到数据库中,该数据库也是ISO Latin 1编码的.
我怎么能在java中这样做?
我尝试过类似的东西
String s2 = new String(s1.getBytes("ISO-8859-1"), "utf-8");
但它似乎不像我预期的那样工作.
Java中的字符串始终使用Unicode(UTF-16,有效).只有在尝试从文本转换为二进制编码时才需要转换,反之亦然.
涉及的角色是什么?你确定它甚至出现在ISO Latin 1中吗?如果是,我希望您的数据库存储该字符没有任何问题.没有"UTF-8商标标志"这样的东西.您可以使用"表示商标符号UTF-8编码的字节",但这可能是字节数组,而不是字符串.
编辑:如果你的意思是Unicode商标字符 U + 2122,那就超出了ISO-Latin-1的范围.有注册商标字符 U + 00AE,这是不一样的(无论是在外观上还是在法律意义上,IIRC)但可能总比没有好 - 如果你想使用它,那么只需使用:
string replaced = original.replace('\u2122', '\u00ae');