非常奇怪的字节丢失的现象,达人入 本帖最后由 maleangel 于 2009-12-06 04:20:22 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码没有问题。问题在于0xDF08不是一个有效的UTF-8编码。如果用UTF-8编码方式向文件中写入0xDF08,内容已经变成0x003F了。详细情况请参考http://www.fileformat.info/info/unicode/char/df08/index.htm建议象properties处理UTF-8编码的方式。将"\\ued13\udf08\\ufd09"直接写到文本文件中。然后从文本文件中读入"\\ued13\udf08\\ufd09"后再转成char数组。可参考下面的讨论http://topic.csdn.net/u/20091127/14/5aeb4b6d-9e6e-4131-97fa-101a806ac0ed.html?45940#replyachor udf08,这个字符有问题它写入到本地文件中,就出问题了,应该是没有这个字符吧 在Unicode编码中,替代区域U+D800-U+DFFF是一个很特殊的区域,这个区域的代码点并不表示一个字符。它的作用是为使用UTF-16编码方式编码Unicode附加级别代码点(20bit)而设置的。具体参见:《低级的char类型》。在UTF-8编码里面,不能在(U+D800-U+DFFF)区域进行编码的。 看下我之前 回复的问题 代码如下http://topic.csdn.net/u/20091127/14/5aeb4b6d-9e6e-4131-97fa-101a806ac0ed.html?45940#replyachor //System.out.println("\u6C49"); FileOutputStream fos = new FileOutputStream(new File("D:/1.txt")); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); BufferedWriter bw = new BufferedWriter(osw); bw.write("\u6C49"); bw.write("\u6C49"); bw.write("\u6C49"); bw.close(); FileInputStream fis = new FileInputStream(new File("D:/1.txt")); InputStreamReader osi = new InputStreamReader(fis, "UTF-8"); BufferedReader br = new BufferedReader(osi); String str = null; while ((str = br.readLine()) != null) { System.out.println(str); } } 看来是windows造的孽,utf-8本身应该是支持的(内存中可以解码),只是本地化成文件后丢失了.本来想自己写套基于UTF-8的加密逻辑的.看来没戏了. 用正则表达式获取字符串中的URL和标题 导入包 java 写类似资源管理器的问题 关于java的包 [紧急]poi操作excel,发现getRow或者getCell会出现NULL。 新手请教:在javac时 出现HelloWorld.java 使用或覆盖了已过时的API 请教一个复数类的设计问题 怎样生成可执行文件exe? BasicCodeGenerator 基本类代码生成器JBuilder插件 菜鸟级问题^——^学习JAVA,要C语言基础吗? jsp相关问题!!!!急急 javax.xml.bind.JAXBContext:看下这是什么问题?
如果用UTF-8编码方式向文件中写入0xDF08,内容已经变成0x003F了。详细情况请参考
http://www.fileformat.info/info/unicode/char/df08/index.htm建议象properties处理UTF-8编码的方式。将"\\ued13\udf08\\ufd09"直接写到文本文件中。
然后从文本文件中读入"\\ued13\udf08\\ufd09"后再转成char数组。
可参考下面的讨论
http://topic.csdn.net/u/20091127/14/5aeb4b6d-9e6e-4131-97fa-101a806ac0ed.html?45940#replyachor
它写入到本地文件中,就出问题了,应该是没有这个字符吧
代码如下
http://topic.csdn.net/u/20091127/14/5aeb4b6d-9e6e-4131-97fa-101a806ac0ed.html?45940#replyachor
//System.out.println("\u6C49");
FileOutputStream fos = new FileOutputStream(new File("D:/1.txt"));
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("\u6C49");
bw.write("\u6C49");
bw.write("\u6C49");
bw.close(); FileInputStream fis = new FileInputStream(new File("D:/1.txt"));
InputStreamReader osi = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(osi);
String str = null;
while ((str = br.readLine()) != null)
{
System.out.println(str);
}
}