【问题标题】:How can I output data with special characters visible?如何输出带有可见特殊字符的数据?
【发布时间】:2015-12-10 00:51:36
【问题描述】:

我有一个提供给我的文本文件,但没有人知道它的编码。在文本编辑器中查看它,一切看起来都很好,正确地排列成整齐的列。

但是,当我读取数据时,我发现了一些异常情况。即使从视觉上看,“Foo”字段出现在文本文件的相同列中(例如,在第 15-20 列中),当我尝试使用 substring(15,20) 将其拉出时,我的数据变化很大。有时我会提取字节 11-16,有时是 18-23,有时是 15-20……记录之间没有一致性。

我怀疑有一些特殊的字符,在我的文本编辑器中是不可见的,但可以被String 方法读取(并计入索引)。 Java中有什么方法可以用任何可见的特殊字符转储文件的内容,这样我就可以看到我需要用正则表达式替换的字符串?

如果不是在 Java 中,任何人都可以推荐一个可以帮助我的工具吗?

【问题讨论】:

    标签: java io


    【解决方案1】:

    我将从直接查看文件开始。任何代码都会增加一层怀疑。使用 Total Commander(或您平台上的同等设备),查看文件 (F3) 并切换到十六进制模式。您建议特殊字符的行为在行之间甚至不一致,因此您应该在尝试通过算法修复它之前获得一些关于格式的视觉线索。

    【讨论】:

    • 这正是我想要做的......〜看看〜在围绕它进行编程之前有什么。感谢总指挥官的提示!看起来这会有很大帮助。
    【解决方案2】:

    您是否尝试将文件的内容打印为单独的整数或字节?这样你就可以看到有没有隐藏的字符。

    【讨论】:

    • 对于我要提取的字段,是的...我使用substring 来抓取单个字节(如char),我没有看到任何奇怪的东西。我想尝试绕过String 方法的东西,但我不确定它在Java 中的位置——或者我是否完全需要另一个工具。
    • 尝试打印之前的内容。例如,这会告诉您是否有 8 个空格或 1 个制表符 (\t)。
    • 如果Character.isLetterDigit(c),也许您可​​以询问每个char c,如果不是,则将其打印为整数。这样您就可以更轻松地找到特殊字符。
    猜你喜欢
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2023-03-07
    • 2014-03-03
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多