java 板


LINE

※ 引述《if4 (逍遥游)》之铭言: : 之前...有人发问题文...问 netbeans 下遇到乱码的问题... : 我也遇到... : 也请教过我的老师... : 他也没解决... : 我现在不算已经解决...在 netbeans 下我依然有乱码... : 但是我今天把 jar 弄出来後... : 执行... : 意外的发现没有乱码...这算是已经解决了吗?我也不知道...但是以 jar 形式 : 执行...确实没有乱码... : 有乱码的... : http://i303.photobucket.com/albums/nn131/if930/nbj01.jpg
: 没乱码的... : http://i303.photobucket.com/albums/nn131/if930/nbj02.jpg
: 部分程式码... : http://pastebin.com/1sQCNgTb 这事情有没有解决的关键是:你知不知道怎麽弄出乱码的呢? 如果你知道弄成乱码的『原因』并推测出正确显示的条件才是『解』 若是胡乱弄了,恰好发现能正常显示,那只是 work around。 首先,来谈一下你的程式码跟可以 reproduce 的程式有什麽差别。 0. 交待 reproduce 的环境与步骤 1. 程式必需可以执行且微小,但足够用来演示你的问题。 关於 0. 在你的文章中可以找到相关的线索, 但若您能明确交待会是更好的发问型式。 关於 1. 你的程式无法执行,会让想要协助你的人,多一道障碍。 通常是太闲的人才会去试着看它, 例如:像我这样脚扭伤在家哪都不能去的闲人。。 稍为整理一下,会像这样: http://pastebin.com/1bZnTFBj (只要剪下贴上到 IDE 内就能跑了。) 不过事实上只要: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ShowData { public static void main(String[] args) throws IOException { URL httpurl = new URL("http://tw.stock.yahoo.com/q/q?s=0050"); BufferedReader br = new BufferedReader( new InputStreamReader(httpurl.openStream())); String tmp; while ((tmp = br.readLine()) != null) { System.out.println(tmp); } br.close(); } } 如果你没有简化到这个步骤, 能推测你可能未用过 debug 去检查是不是源头就出问题了。 因为当你简化到这步骤,你的问题范围就会缩小到 『为什麽 BufferedReader 在 NetBeans 下会产生乱码, 在 Windows Command Line 下却不会呢』 不确定你在向老师提问时有没有提到,你使用到 Reader。 因为一旦牵涉到 Reader 就会需要指定正确的编码。 你的情况是未指定,那麽程式执行时就会参考目前 JVM 的编码: http://caterpillar.onlyfun.net/Gossip/Encoding/JVMEncoding.html 以你程式的情况来说,是没有指定编码的,能由你的执行结果推测: 1. 在 Windows Command Line 下取得的预设编码恰能正确显示文字 2. NetBeans 启动的 JVM 预设编码与 Windows Command Line 执行时不同 要验证这个想法,那当然是写程式出目前的 encoding: import java.nio.charset.Charset; public class ShowEncoding { public static void main(String[] args) { System.out.println("encoding: " + Charset.defaultCharset()); } } 你得分别在 NetBeans 与 Windows Command Line 下执行, 以 osx 选中文语系来说,也有相似的情况,在 Eclipse 下是 utf-8 在 console 下是 Big5: qty:TESTtest qrtt1$ java -classpath bin ShowEncoding encoding: Big5 接着你在你正常时行的 Windows Command Line 多加参数: java -Dfile.encoding=utf-8 ...... (你就会看到一样的乱码出现) 对你来说,要在 NetBeans 下能正常显示,你有二个选择: 1. 设定 jvm 启动参数 -Dfile.encoding=Big5 让它以 Big5 解读 Reader 的内容。 2. 正确指定 Reader 要使用的 charset BufferedReader br = new BufferedReader( new InputStreamReader(httpurl.openStream(), "Big5")); 另外,虽然 http header 不一定可靠,但还是值得检查一下 content-type: import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; public class ShowContentType { public static void main(String[] args) throws IOException { URL httpurl = new URL("http://tw.stock.yahoo.com/q/q?s=0050"); HttpURLConnection huc = (HttpURLConnection) httpurl.openConnection(); System.out.println(huc.getHeaderField("Content-Type")); } } 结果为:text/html; charset=Big5 如果你的 case 都是写死的,那直接看 browser 实际上用什麽 encoding: http://bit.ly/QUatdj 最後,如果你想要你写的程式不会换了 os 或执行环境就突然冒出乱码, 最好在开发时明确地指定你要用的预设编码为 utf-8, 并在该各别指定使用非预设编码的地方都写上。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.126.137 ※ 编辑: qrtt1 来自: 114.43.126.137 (07/29 15:31) ※ 编辑: qrtt1 来自: 114.43.126.137 (07/29 15:33)
1F:推 if4:谢谢你详尽的解说 ^_^ 请容我慢慢消化...感恩 ^_^ 07/29 15:38
2F:推 if4:老实说...老师也没讲得这麽详细...你可以作我的老师...感恩^_^ 07/29 15:42
3F:推 if4:正确了...谢谢你的开导...已经不会乱码了...再一次谢谢你 ^_^ 07/29 15:50
4F:推 if4:建议板主把这篇编进精华文...谢谢 ^_^ 07/29 15:59
5F:推 Terrill:推文XD 08/06 19:43







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP