检查String是否包含编码字符
您好我正在寻找一种方法来检测字符串是否被编码
例如
String name = "Hellä world"; String encoded = new String(name.getBytes("utf-8"), "iso8859-1");
这个encoded
变量的输出是:
Hellä world
如你所见,有一个带有坟墓的A和另一个符号。 有没有办法检查输出是否包含编码字符?
听起来你想检查从latin1中的字节解码的字符串是否也可以用UTF-8解码。 这很简单,因为非法字节序列被字符\ ufffd替换:
String recoded = new String(encoded.getBytes("iso-8859-1"), "UTF-8"); return recoded.indexOf('\uFFFD') == -1; // No replacement character found
你的问题没有意义。 java String
是一个字符列表。 在将它们转换为字节之前,它们没有编码,此时您需要指定一个(尽管您会看到很多使用平台默认的代码,例如String.getBytes()
,没有参数)。
我建议你阅读这个http://kunststube.net/encoding/ 。
String name = "Hellä world"; String encoded = new String(name.getBytes("utf-8"), "iso8859-1");
这段代码只是一个字符损坏错误。 您使用UTF-16字符串,将其转码为UTF-8,假装它是ISO-8859-1并将其转码回UTF-16,导致字符编码错误。
我不确定你想做什么或者你的问题是什么。
这条线没有任何意义:
String encoded = new String(name.getBytes("utf-8"), "iso8859-1");
您将您的name
编码为“UTF-8”,然后尝试解码为“iso8859-1”。
如果您将name
编码为“iso8859-1”,只需执行name.getBytes("iso8859-1")
。
请告诉我们您遇到的问题,以便我们提供更多帮助。
如果我正确理解了您的问题,此代码可能会对您有所帮助。 函数isEncoded检查其参数是否可以编码为ascii或者是否包含非ascii-chars。
public boolean isEncoded(String text){ Charset charset = Charset.forName("US-ASCII"); String checked=new String(text.getBytes(charset),charset); return !checked.equals(text); } @Test public void testAscii() throws Exception{ Assert.assertFalse(isEncoded("Hello world")); } @Test public void testNonAscii() throws Exception{ Assert.assertTrue(isEncoded("Hellä world")); }
您还可以检查其他字符集更改charset var或将其移动到参数。
您可以通过此代码检查您的字符串是否已编码
public boolean isEncoded(String input) { char[] charArray = input.toCharArray(); for (int i = 0, charArrayLength = charArray.length; i < charArrayLength; i++) { Character c = charArray[i]; if (Character.getType(c) == Character.OTHER_LETTER)){ return true; } } return false; }
- Java setResizable(false)改变窗口大小(swing)
- java.lang.NoSuchMethodError:javax.servlet.ServletContext.getEffectiveSessionTrackingModes()Ljava / util / Set;
- 在为mifos源代码构建war文件的过程中无法修复liqibase maven插件更新sql?
- ActiveMQ:’通道长时间处于非活动状态’exception会停止代理消息传递
- 新的multithreading – 如何在java中使用wait()和notify()?
- 在Java中从JButton拖放到JComponent
- 使用Java PDFBox库编写俄语PDF
- 为什么接口根据类文件格式扩展Object?
- 覆盖Java中的generics集合时出错