java中删除特殊字符的策略建议
我创建了一个Java应用程序,它解析一个文本文件以提取加载到数据表中的字段。我们发现了一些异常处理,其中表不能接受特殊字符,特别是java中删除特殊字符的策略建议,java,string,special-characters,Java,String,Special Characters,我创建了一个Java应用程序,它解析一个文本文件以提取加载到数据表中的字段。我们发现了一些异常处理,其中表不能接受特殊字符,特别是等 当我查看输入文件时,这些字符在输入文件中显示为空格,但Java对它们的解释不同。我怀疑这是一个不同的字符代码 我的问题是:为了过滤掉这些字符,是否有任何方法可以生成Java所看到的内容的列表?我正在考虑打印字符和字符代码,如果可能的话,打印字符集(ASCII、ANSI、UTF-8等)。这样,我就可以在结束文件中为字符替换一个空格,并解决我的问题 有没有一个更简单的
等
当我查看输入文件时,这些字符在输入文件中显示为空格,但Java对它们的解释不同。我怀疑这是一个不同的字符代码
我的问题是:为了过滤掉这些字符,是否有任何方法可以生成Java所看到的内容的列表?我正在考虑打印字符和字符代码,如果可能的话,打印字符集(ASCII、ANSI、UTF-8等)。这样,我就可以在结束文件中为字符替换一个空格,并解决我的问题
有没有一个更简单的解决方案我没有看到 试着说,UTF8
public static byte[] stringToByteArray(String s)
throws UnsupportedEncodingException {
return s.getBytes("UTF-8");
}
或其他类似“iso-8859-1”的格式,并将bytearray转换为字符串,然后尝试打印?听起来您正在交叉字符集,或者您的输入文件中包含某种控制字符序列。你应该把精力集中在这方面,并确保你使用的是正确的角色集。我能想到的在文件中滚动字符列表的唯一方法是数组并循环文件
如果你真的想把所有的东西都去掉,看看这个帖子
它解释了如何使用正则表达式来处理白名单字符和黑名单字符。正确的解决方案是使您的数据库能够处理这些字符。不要过滤“特殊”字符。保留它们,并学习端到端正确处理字符编码。你确定一开始就正确读取了UTF-8数据吗?不幸的是,@Jayan,这不是一个选项。文本文件是我被赋予的工作,我不知道它们是在哪个字符集创建的。这是我被抓住的岩石和坚硬的地方,严重限制了我以正确的方式做到这一点的能力。:@dwwilson66:您将如何将其转换回真实数据?如果您将输入作为文件,则可以猜测编码-。好吧,你只能猜测。我得到的文件不知道字符集。同意最好允许使用spec字符,但考虑到我必须处理的问题……我计划了数组(虽然我的数组是逐行字节的,因为我已经在解析数据了),但是链接对于如何编写过滤器的信息非常有用。我真的很喜欢白名单而不是黑名单的想法。谢谢