从程序中println出来中文没有问题,就是读取getSearchResult出来的中文乱码了。
代码:
public static String getSearchResult(String urlStr) throws IOException {
BufferedReader br = null;
try {
URL url = new URL(urlStr);
br = new BufferedReader(new InputStreamReader(url.openStream()));
String value = "", value_all = ""; while ((value = br.readLine()) != null) {
value_all = value_all + value;
}
value_all = value_all.trim();
return value_all;
} catch (IOException e) {
throw e;
} finally {
if (br != null)
br.close();
}
}操作系统:
Red Hat Enterprise Linux AS release 4 (Nahant Update 1)locale 设置:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
代码:
public static String getSearchResult(String urlStr) throws IOException {
BufferedReader br = null;
try {
URL url = new URL(urlStr);
br = new BufferedReader(new InputStreamReader(url.openStream()));
String value = "", value_all = ""; while ((value = br.readLine()) != null) {
value_all = value_all + value;
}
value_all = value_all.trim();
return value_all;
} catch (IOException e) {
throw e;
} finally {
if (br != null)
br.close();
}
}操作系统:
Red Hat Enterprise Linux AS release 4 (Nahant Update 1)locale 设置:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
解决方案 »
- 准备投简历了,先散50分!
- 中文写的程序
- 转让培训机构内部视频培训录像(JAVA+Oracle)和相关书籍,要的进啊~~~
- 有没有办法判断一个String当前的编码格式???
- 联接mysql出现的异常
- help:一个毕业设计题目
- C程序语言中调用JAVA方法
- 怎样把一个文件内的所有数据倒入StringBuffer内?
- 好像CSDN网站有些问题,搜索出来的都不能显示——图片显示问题(简单不能再简单)
- 请教一道题!
- log4j 日志请求中的DEBUG、INFO、WARN、ERROR和FATAL五5个级别 ,它们起个什么作用啊,不都是向外输出信息吗?它们作用有什么不同吗
- 如何将窗口程序最小化到任务栏?
getSearchResult是println乱码还是保存文件后乱码?
System.out.println(getSearchResult("http://127.0.0.1/aa.jsp")); 乱码
这个网页可能不是UTF-8的编码吧,你要把它转换一下编码,转换成utf-8就可以了
System.out.println(new String(result.getBytes(), "utf-8"));
System.out.println("2" + new String(result.getBytes("iso-8859-1"), "utf-8"));
System.out.println("3" + new String(result.getBytes("gb2312"), "utf-8"));
System.out.println("4" + new String(result.getBytes("gb2312"), "iso-8859-1"));
System.out.println("5" + new String(result.getBytes("gb2312")));
System.out.println("6" + new String(result.getBytes(), "iso-8859-1"));
System.out.println("7" + new String(result.getBytes(), "gb2312"));
System.out.println("8" + new String(result.getBytes("utf-8"), "iso-8859-1"));
System.out.println("9" + new String(result.getBytes("utf-8"), "gb2312"));
System.out.println("10" + new String(result.getBytes("utf-8"), "gbk"));
System.out.println("11" + new String(result.getBytes("iso-8859-1"), "gb2312"));
System.out.println("12" + new String(result.getBytes("iso-8859-1")));没有一个能正常显示的!
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=locale应该是这样的~~
export LANG=zh_CN.UTF-8 ~~这样就不会乱码啦~
or
br = new BufferedReader(new InputStreamReader(url.openStream(),"utf8"));两个都试试
LANG=zh_CN.GB18030
LC_CTYPE="zh_CN.GB18030"
LC_NUMERIC="zh_CN.GB18030"
LC_TIME="zh_CN.GB18030"
LC_COLLATE="zh_CN.GB18030"
LC_MONETARY="zh_CN.GB18030"
LC_MESSAGES="zh_CN.GB18030"
LC_PAPER="zh_CN.GB18030"
LC_NAME="zh_CN.GB18030"
LC_ADDRESS="zh_CN.GB18030"
LC_TELEPHONE="zh_CN.GB18030"
LC_MEASUREMENT="zh_CN.GB18030"
LC_IDENTIFICATION="zh_CN.GB18030"
LC_ALL=
一旦reader了就是有编码转换过
java里面各种地方都是这样的,乱麻就找stream->reader的地方
问题是你不知道原来编码是什么不要用BufferedReader,直接用InputStream,或者在InputStreamReader构造的时候就设置编码看看,应该可以,设置成utf-8或者gb2312
------------------------------------------------
lz刚才没这样测试吗?