现在有这么一个文件,文件中字符串用Tab键分隔
例如
aaa bbb cc
但是有时候
汉字和tab键合成了一个,成为了乱码
例如
电脑公?3楼 fff GGG
那个司和tab键合并成了乱码
修改源文件生成的方式肯定不可能,只能考虑读的时候做一些处理
例如
电脑公?3楼 fff
这行记录,我以tab键解析
那么结果 应当是
电脑公
3楼
fff
那个"司"字丢掉就算了,但是这条记录不能丢,请问用java怎么达到这个目标
Oracle中有个ASCIISTR可以来判断乱码,Java有类似的吗?
附加 Oracle判断方式
case when asciistr(subsname) like '%\FFFD%' THEN '乱码'
else subsname
end
[b]问题补充:[/b]
在记事本打开就是
电脑公?3楼 fff GGG
这个样子,是第3方传过来就是这个样子.是在 AIX机器上看到的啊
另外在AIX机器上看到也是现在这个样子的啊
我们不可能要求第3方改啊
对比一下这两句就知道了:
[code="java"]
System.out.println(java.nio.charset.Charset.forName("GBK").newEncoder().canEncode("淋浴"));
System.out.println(java.nio.charset.Charset.forName("ISO-8859-1").newEncoder().canEncode("淋浴"));
[/code]
需要注意的,你那个文件最初编码是什么,你必须清楚,比如说你的文件是UTF-8编码的,而你的JVM的默认编码环境是GBK,如果你用FileReader作为输入字符流,那么你得到的将是完全的的乱码,尽管你用记事本打开这个文件是正确的编码。FileReader只支持默认字符编码。此时你必须在 FileInputStream 上构造一个 InputStreamReader来实现你的目标
根据你贴出来的例子,对乱码问题理解上有混淆,你应该仔细地看看中文编码的资料。我不觉得你那种方式可以解决乱码问题。
关于java中的字符判断,可以从String对象中遍历char,然后char是可以强制转换成int类型的,int类型10进制可以转换成16进制。