读取汉字乱码

问题描述

publicclasstest{publicstaticvoidmain(String[]args){Stringin="到沙发撒旦法萨法大是大非";try{BufferedReaderr=newBufferedReader(newInputStreamReader(newStringBufferInputStream(in)));Stringline;while((line=r.readLine())!=null){line+="n";}}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}上面的程序读取的line是乱码,找不到原因,各位高手帮忙,急

解决方案

解决方案二:
lz这个程序最后line=null吧,是最后一次readline返回的值另外类名首字母要大写,line要初始化还试用了已经废弃的构造函数
解决方案三:
没有设置文字格式,还有使用了jdk1.4以前的构造函数
解决方案四:
newStringBufferInputStream

这个已经过时了,你查看一下api就知道了,你想打印Stringin的值可以这样读取BufferedReaderr=newBufferedReader(newStringReader(in));

解决方案五:
BufferedReaderr=newBufferedReader(newStringReader(in));
解决方案六:
Stringin="到沙发撒旦法萨法大是大非";换成Stringout="到沙发撒旦法萨法大是大非";Stringin=newString(out,"gb2312");
解决方案七:
Stringin="到沙发撒旦法萨法大是大非";byte[]by;Stringout=newString(in.getBytes(),"utf-8");
解决方案八:
引用5楼WN2007的回复:

Stringin="到沙发撒旦法萨法大是大非";换成Stringout="到沙发撒旦法萨法大是大非";Stringin=newString(out,"gb2312");

sorry,记错了Stringin="到沙发撒旦法萨法大是大非";应该换成Stringout="到沙发撒旦法萨法大是大非";Stringin=newString(out.getBytes(),"gb2312");
解决方案九:
不知道你这个问什么出错,但你这个已经过时了。我写了一个运行OK,请参考。Stringin="到沙发撒旦法萨法大是大非afaafafa";try{StringReadersr=newStringReader(in);BufferedReaderbr=newBufferedReader(sr,in.length());Stringline="";if((line=br.readLine())!=null){System.out.println(line);}}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
解决方案十:
try{//StringBufferInputStream类是一个过时类,在jdk文档中可以查到,此类//此类未能正确地将字符转换为字节。从JDK1.1开始,从字符串创建流的首选方法是通过StringReader类进行创建。//BufferedReaderr=newBufferedReader(newInputStreamReader(new//StringBufferInputStream(in)));//System.in为标准输入类,此时可以在console中输入你想要的字符串BufferedReaderr=newBufferedReader(newInputStreamReader(System.in));Stringline=newString();Stringtmp="";while(!(tmp=r.readLine()).equals("")){line=line+tmp+"n";}System.out.println(line);}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}

解决方案十一:
BufferedReaderr=newBufferedReader(newStringReader(in));
解决方案十二:
一般要用utf-8台湾用gb2312
解决方案十三:
天,楼上的说台湾用gb2312?
解决方案十四:
newInputStreamReader(newStringBufferInputStream(in),"UTF-8"));里面的UTF-8你自己根据情况修改InputStreamReader是可以指定流的编码类型的,具体参考这个

时间: 2024-08-29 02:25:42

读取汉字乱码的相关文章

bat-windows 中用BAT读取文本文件乱码

问题描述 windows 中用BAT读取文本文件乱码 windows 中用BAT读取文本并在控制台显示出来,显示乱码.result.txt里面是中文. @echo off echo 正在执行,请稍后.... tesseract example1.tif result -l chi_sim for /f "delims=" %%a in (result.txt) do ( echo %%a ) @pause 解决方案 http://jingyan.baidu.com/article/ce

File.ReadAllText 读取中文乱码问题

原文:File.ReadAllText 读取中文乱码问题 用 File.ReadAllText(filepath)   去读取中文txt文件会遇到乱码问题,我自己测试了一下,ANSI编码的txt才会出现这种问题,其他编码入utf-8.unicode不会出现这类问题,编码上面通过一个重载就可以搞定了 File.ReadAllText (path, Encoding.Default)   System.Text.Encoding 命名空间下有各种编码,操作汉字的文件或流常要涉及到

用PHP编程读取汉字点阵数据

编程|汉字|数据    背景知识:      简体中文国标字库(1981年订,中国大陆).7445个字符,其中汉字6773个,包括一级汉字3755个,二级汉字3008个.采用2字节(16位二进制)编码.      区位码:国标GB2312规定,所有的国标汉字与符号组成一个94×94的矩阵.在此方阵中,每一行称为一个"区",每一列称为一个"位",因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94).每个区内有94个位(位号分别为01到94)的汉字字符集.

PHP读取汉字点阵数据

汉字|数据 心血来潮,想模仿LCD的显示效果,写了个从点阵字库中提取汉字点阵数据的一段php脚本. 背景知识:简体中文国标字库(1981年订,中国大陆).7445个字符,其中汉字6773个,包括一级汉字3755个,二级汉字3008个.采用2字节(16位二进制)编码. 区位码:国标GB2312规定,所有的国标汉字与符号组成一个94×94的矩阵.在此方阵中,每一行称为一个"区",每一列称为一个"位",因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94).每

PHP读取汉字的点阵数据

  本文给大家详细讲述了使用PHP读取汉字的点阵数据的方法和示例,十分的实用,有需要的小伙伴可以参考下. 项目中遇到的问题: PHP如何读取汉字的点阵数据?想实现输入一段文字,能得到这一段文字的所有点阵码. 解决方法: 简体中文国标字库7445个字符,其中汉字6773个,包括一级汉字3755个,二级汉字3008个.采用2字节(16位二进制)编码. 区位码:国标GB2312规定,所有的国标汉字与符号组成一个94×94的矩阵.在此方阵中,每一行称为一个"区",每一列称为一个"位&

win7系统下汉字乱码怎么解决

  由用户在win7 64位旗舰版下载安装之后就发现,自己在安装其他程序的时候就会出现中文乱码的现象,这是怎么一回事呢?今天小编就来给大家介绍下win7系统下汉字乱码怎么解决. 步骤一:打开win7系统的运行窗口,然后输入regedit的指令回车打开win7系统的注册表编辑器. 步骤二:在win7系统的注册表编辑器里面,我们按照这个顺序"HKEY_LOCAL_MACHINE System CurrentControlSet Control FontAssoc"打开所需要编辑的Aossi

char-c语言文件读取汉字及汉字编码的问题

问题描述 c语言文件读取汉字及汉字编码的问题 先贴程序#define _CRT_SECURE_NO_WARNINGS #include using namespace std;int main(void){ char ch; FILE *f; int i = 0; int count = 0; f = fopen(""test.txt""r+""); while ((ch = getc(f)) != EOF) { fseek(f i SEEK_S

mp3-宽字符 读取 MP3 乱码

问题描述 宽字符 读取 MP3 乱码 用了wchar__t读取,CFILE::typeUnicode 读出来全是乱码 不管是读取mp3格式还是把后缀变成txt都一样 怎么办啊,编码格式是Unicode 16 LE 解决方案 MP3干嘛作为字符串去读.你是想获取id3信息么? 解决方案二: 使用二进制去读,然后自己解析mp3的格式就好. 解决方案三: http://www.cnblogs.com/Activer/archive/2006/06/15/426258.html 解决方案四: mp3里可

excel导出oracle数据汉字乱码,但是在PLSQL下或GOLDEN下都正常!

问题描述 excel导出oracle数据汉字乱码,但是在PLSQL下或GOLDEN下都正常! excel导出oracle数据汉字乱码,但是在PLSQL下或GOLDEN下都正常!请大神帮忙! 解决方案 应该是字符集的问题,把字符集设置为UTF-8试试