当前位置: 首页 > 面试题库 >

Java:检测给定字符编码的不可显示字符

倪举
2023-03-14
问题内容

我目前正在开发一个用于验证和解析CSV文件的应用程序。CSV文件必须以UTF-8编码,尽管有时我们会以错误的编码获得文件。CSV文件很可能包含德语字母的特殊字符(Ä,Ö,Ü,ß),因为CSV文件中的大多数文本都是德语。

对于验证器,我需要确保文件是UTF-8编码的。只要不存在特殊字符,解析就很可能没有问题。

到目前为止,我尝试将文件读取为字节并使用一些库来检测(或猜测)编码。我尝试了此博客文章的大多数可能性:http : //fredeaker.blogspot.com/2007/01/character-
encoding-detection.html

但是,我尝试过的所有库均未返回正确的编码,因此无法解析特殊字符。

现在我的问题是:有没有一种方法可以确定给定的字符编码(如UTF-8)来检测未正确编码的字符?因此,基本上,这些字符在(Eclipse)控制台中显示为问号。

还是有其他方法可以正确确定字符编码?我只需要知道它是否为UTF-8。

预先感谢大家的帮助!:)

最好的问候,罗伯特


问题答案:

无法正确解码的字节序列将被替换为“替换字符”,\uFFFD显示如下:但是,如果输出设备不支持该字符,则可能改用问号(?)。

因此,在将UTF-8数据解码为String对象之后,搜索的出现\uFFFD

另外,如果您InputStreamReader使用CharsetDecoder自己创建的实例设置,则可以获得更多控制权。例如,您可以指定如果无法解码任何字节序列,Exception则应引发一个。或者您可以忽略它们。或者,您可以指定其他字符作为替换字符。



 类似资料:
  • 问题内容: 似乎是一个相当热门的问题,但是我还没有找到解决方案。也许是因为它有 很多 风味。虽然在这里。我正在尝试读取一些用逗号分隔的文件(有时,分隔符可能比逗号更具独特性,但现在就可以使用逗号了)。 这些文件本应在整个行业中标准化,但是最近我们看到了许多不同类型的字符集文件。我希望能够设置BufferedReader来对此进行补偿。 执行此操作并检测是否成功的标准方法是什么? 我对这种方法的第一

  • 问题内容: 我正在寻找一种检测文档中字符集的方法。我一直在这里阅读Mozilla字符集检测实现: 通用字符集检测 我还找到了一个名为jCharDet的Java实现: JCharDet 这两个都是基于使用一组静态数据进行的研究。我想知道的是,是否有人成功使用了其他实现?您是否采用了自己的方法,如果是的话,您用来检测字符集的算法是什么? 任何帮助,将不胜感激。我既不是通过Google寻找现有方法的清单

  • 我有一个缓冲区与字符编码在Windows 1252。然而,当我用适当的编码创建一个新的字符串时,而不是预期的结果,我经常会得到询问标记,例如。 因此,系统应在其上方显示带“^”的“u”字符。而是显示“?”。 任何想法?

  • 问题内容: 我读取了大约1000个文件名,其中一些文件以UTF8编码,而某些文件为CP1252。 我想将它们全部解码为Unicode,以便在脚本中进行进一步处理。有没有一种方法可以使源编码正确解码为Unicode? 例: 问题答案: 如果您的文件位于和中,则有一种简单的方法。 否则,有一个字符集检测库。 Python-检测字符集并转换为utf-8 https://pypi.python.org/p

  • 问题内容: 我想编写一个简单的类来处理字符串(可能是很长的字符串,最多可以包含100万个字符)。字符串基本上由两个可以相互混合的字符“ a”和“ b”组成。如果a的个数等于b的个数,则应用会说可以,否则为NOK。我想知道如何最有效地做到这一点。我考虑过使用正则表达式拆分String,然后计算a和b的出现次数,但也许有人知道更好的方法。对于regex来说还比较陌生,所以请让我知道是否有任何错误。这是

  • 我在servlet中将响应内容类型设置为:“text/event-stream;charset=utf-8”,并将响应字符编码设置为“utf-8”。 但是,response.getCharacterEncoding()在终端中打印“ISO-8859-1”。 Java代码: 看来字符编码设置不正确。我该如何解决这件事?我花了很多时间想这个问题的原因。请帮帮忙。