java中文乱码,用java读取txt档案中的中文写入资料库出现中文乱码,怎么解决?
java中文乱码,用java读取txt档案中的中文写入资料库出现中文乱码,怎么解决?详细介绍
本文目录一览: .java怎么把乱码转成文字
1. 为什么java编程中写的汉字变成乱码了
您好!
本身编辑文件的时候用的编码不一样.. 例如. 你写的类文件起始编码为 GB-2312 的 (记事本)而用ide 工具打开后会出现乱码. 那就是ide 本身默认打开文件的编码方式不一样.当然 相反也是.. ide 编写的文件 默认编码和打开方式 例如 记事本所 或者 html 打开的 可能也会出现乱码, 那就需要,, 统一编码. 简单的方法就是 将文件用 记事本打开.. 然后另存. 另存的过程中有个 编码方式选择. 选择与编译器相同的就可以了,
也可以改变编译器的默认编码.
希望能帮到您!敬请采纳!
中国物联网校企联盟
2. java乱码转换问题
自从接触Java和JSP以来,就不断与Java的中文乱码问题打交道,现在终于得到了彻底的解决,现将我们的解决心得与大家共享。
一、Java中文问题的由来 Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。
首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。
本文要重点讨论的是第二类乱码,即Java程序与其他存储媒介交互时产生的乱码。很多存储媒介,如数据库,文件,流等的存储方式都是基于字节流的,Java程序与这些媒介交互时就会发生字符(char)与字节(byte)之间的转换,具体情况如下: 从页面form提交数据到java程序 byte->char从java程序到页面显示 char—>byte 从数据库到java程序 byte—>char从java程序到数据库 char—>byte 从文件到java程序 byte->char从java程序到文件 char->byte 从流到java程序 byte->char从java程序到流 char->byte 如果在以上转换过程中使用的编码方式与字节原有的编码不一致,很可能就会出现乱码。
二、解决方法前面已经提到了Java程序与其他媒介交互时字符和字节的转换过程,如果这些转换过程中容易产生乱码。解决这些乱码问题的关键在于确保转换时使用的编码方式与字节原有的编码方式保持一致,下面分别论述(Java或JSP自身产生的乱码请参看第一部分)。
1、JSP与页面参数之间的乱码JSP获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("GBK")或 request.setCharacterEncoding("gb2312")。
如果在JSP将变量输出到页面时出现了乱码,可以通过设置response.setContentType("text/html;charset= GBK")或response.setContentType("text/html;charset=gb2312")解决。如果不想在每个文件里都写这样两句话,更简洁的办法是使用Servlet规范中的过虑器指定编码,过滤器的在web.xml中的典型配置和主要代码如下:web.xml: CharacterEncodingFilter .vschool.web.CharacterEncodingFilter encodingGBK CharacterEncodingFilter /* CharacterEncodingFilter.java: public class CharacterEncodingFilter implements Filter { protected String encoding = null; public void init(FilterConfig filterConfig) throws ServletException {this.encoding = filterConfig.getInitParameter("encoding");} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {request.setCharacterEncoding(encoding);response.setContentType("text/html;charset="+encoding);chain.doFilter(request, response);} } 2、Java与数据库之间的乱码大部分数据库都支持以unicode编码方式,所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。
很多数据库驱动自动支持unicode,如Microsoft的SQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,如如mm的 mysql驱动:jdbc:mysql:localhost/WEBCLDB?useUnicode=true& characterEncoding=GBK。
3、Java与文件/流之间的乱码Java读写文件最常用的类是FileInputStream/FileOutputStream和FileReader/FileWriter。其中 FileInputStream和FileOutputStream是基于字节流的,常用于读写二进制文件。
读写字符文件建议使用基于字符的 FileReader和FileWriter,省去了字节与字符之间的转换。但这两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现乱码。
在这种情况下,建议使用FileReader和FileWriter的父类: InputStreamReader/OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类型: InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。
3. java怎么把UTF
string.getbytes("ISO646-US")
Unicode当然是一个很大的 *** ,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示 *** 字母Ain,U+0041表示英语的大写字母A,“汉”这个字的Unicode编码是U+6C49。
Unicode固然统一了编码方式,但是它的效率不高,比如UCS-4(Unicode的标准之一)规定用4个字节存储一个符号,那么每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。
java 写入txt文件的中文乱码是怎么回事?
原因是写入时使用的字符编码和期望的不一致导致的。
java工作区统一编码。统一为utf-8
这个就是输出流的编码问题吧?如果你在输出时指定好具体的编码,或者说指定跟原网页一直的编码。
如果你期望写到文件中的汉字是 GBK编码,可以写文件时,将字符串准换成 GBK编码的byte[]。
网页编码和输出流编码一致。
java servlet出现中文乱码怎么办?
response.setContentType("text/html;charset=UTF-8;pageEncoding=UTF-8");\x0d\x0a这个要在servlet的方法中的第一行,你先进行response的转换就可以了,改成\x0d\x0aresponse.setContentType("text/html;charset=UTF-8;pageEncoding=UTF-8");//放到这\x0d\x0aPrintWriter out=response.getWriter();\x0d\x0a//从这里\x0d\x0aresponse.setCharacterEncoding("UTF-8");\x0d\x0aout.println("");\x0d\x0aout.println("");\x0d\x0aout.println("Simple servlet");\x0d\x0aout.println("中国");\x0d\x0aout.println(" ");
在java中怎样处理中文乱码的问题?(有几种处理方式)
(1) string ss; ss=new string(ss.getBytes("IS0-8859-1","GB2312"));
(2)在web.xml中添加
标签处理乱码;
所以在以url(或表单提交方式是get的数据)传值的时候应该硬性转码:
String para =new String(str.getByte("iso-8859-1"),"UTF-8");
统一编码,如用utf-8
用过滤器
http://wenku.baidu.com/view/a83df40b79563c1ec5da7182.html
读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
如何解决Java项目中的中文乱码
设置工作空间的编码:
编辑器的编码会影响到所有的项目中的字符的显示,可以说是作用最为广泛的设置,每一个项目都会受到这个设置的影响。点击菜单栏中的窗口(Window)— —选项(Preferences)。
点击常规(General)— —工作空间(Wordspace),然后在右侧的文本文件编码格式(Text file encoding)中选择你想要设置的编码格式,系统默认的格式为GBK。
设置项目的编码:
如果其他的项目中不存在乱码问题,只是个别项目显示时出现乱码,那么我们不需要设置工作空间的编码,只需要修改项目的编码即可。
选中项目后,右键点击,在弹出的菜单中点击属性(Properties)。
在弹出的属性窗口中,选择资源(Resource)— —点击选择Other(其他),然后选择你想要的编码格式。
设置单个文件的编码:
只是个别文件出现了乱码,那么设置个别文件的编码格式就可以解决问题了。选中有乱码的文件,然后点击右键。
在弹出的菜单中选择属性(Properties)。
在弹出的属性窗口中选择资源,点击Other(其他)后设置个别文件的编码方式
一. 设置工作空间的编码
1. 编辑器的编码会影响到所有的项目中的字符的显示,可以说是作用最为广泛的设置,每一个项目都会受到这个设置的影响。点击菜单栏中的窗口(Window)— —选项(Preferences)。
2. 点击常规(General)— —工作空间(Wordspace),然后在右侧的文本文件编码格式(Text file encoding)中选择你想要设置的编码格式,系统默认的格式为GBK。
二. 设置项目的编码
1. 如果其他的项目中不存在乱码问题,只是个别项目显示时出现乱码,那么我们不需要设置工作空间的编码,只需要修改项目的编码即可。
2. 选中项目后,右键点击,在弹出的菜单中点击属性(Properties)。
3. 在弹出的属性窗口中,选择资源(Resource)— —点击选择Other(其他),然后选择你想要的编码格式。
三. 设置单个文件的编码
1. 只是个别文件出现了乱码,那么设置个别文件的编码格式就可以解决问题了。选中有乱码的文件,然后点击右键。
2. 在弹出的菜单中选择属性(Properties)。
3. 在弹出的属性窗口中选择资源,点击Other(其他)后设置个别文件的编码方式。
Eclipse导入项目后,修改了编码为UTF-8后,JAVA文件中的乱码编程正常的中文了。可是第二次打开Eclipse时,
第二次打开Eclipse时,除了导入的项目外,其他原本的项目的JAVA文件中正常中文全部变成乱码了,是设置错误造成的,解决方法如下:
1、首先在软件中,右键出现中文乱码的java项目名,在右键菜单中选择最后一项Properties。
2、点击【Properties】,在弹出窗口选择Resource选项,然后在右侧操作窗口中的第一项选择other选项。
3、在选项右边下拉选择中点选合适的编码格式,如果知道导入项目的使用了什么编码,可以尝试选择utf-8,然后确定Apple and close就可以了。
4、也可以在功能菜单选择》project》然后选择最后一个选项Properties。
5、设置完成后,中文乱码就解决了。
用java读取txt档案中的中文写入资料库出现中文乱码,怎么解决?
用java读取txt档案中的中文写入资料库出现中文乱码,怎么解决? 1,设定下你资料库的编码,一般设定成UTF-8或者GBK或者GB2312 2,java读取TXT资料时可以转换下编码,再存进资料库,从资料库读取出来后显示时也同样的转换下编码,好像可以用个过滤器来弄的,
MFC向MySQL资料库写入资料,中文乱码怎么解决 ① 首先把MySQL的服务停掉 在执行视窗输入: s mysql ② 把伺服器和客户端的字符集改成自己想用的字符集:GB2312或是utf8等…… 具体操作为:开启mysql安装目录下的myini.tet; 找到default-character-set,将其改为自己想用的字符集:GB2312或是utf8等……,要注意的是这里有两个default-character-set,用ctrl+f定位在档案最前面输入default就会找到,都要改过来; ③ 重启MySQL伺服器,在执行视窗输入: start mysql ④ 最重要的是一点是,到这里我们已经能够解决乱码问题了,可问题是我们依然还会出现乱码问题,这是因为我们现在的表被建立的时候用的是预设的字符集(latin1),所以这时候我们要把表删除,然后重建就可以了!
java资料库中文乱码怎么解决 可能原因一:资料库不支援中文,或者是资料库编码格式和java程式码编码格式不一致,这种情况需要修改资料库编码格式: ALTER SYSTEM DISABLE RESTRICTED SESSION;改完编码后执行 sql> conn / as sysdba; sql> shutdown immediate; database closed. database di *** ounted. oracle instance shut down. sql> startup mount; oracle instance started. total system global area 135337420 bytes fixed size 452044 bytes variable size 109051904 bytes database buffers 25165824 bytes redo buffers 667648 bytes database mounted. sql> alter system enable restricted session; system altered. sql> alter system set job_queue_processes=0; system altered. sql> alter system set aq_tm_processes=0; system altered. sql> alter database open; database altered. sql> alter database character set internal_use UTF-8; sql> shutdown immediate; sql> startup; 可能原因二:java程式码生成插入语句的时候,已经发生乱码现象,这种只能是修改专案编码格式或者是在资料获取的时候直接转译程式码编码格式来实现了。
php读取txt档案写入资料库 等于茫然无知地站在那里。 那些纪念碑树立在亚莫迪凯和内格巴 虽受天鹅神翅拍体撞, 给我一只芦笛,歌唱吧 第二天 你早就被风吹绉了的谎言哈哈
android中读取档案中文乱码怎么解决 修改APP的编码就可以了 右键-->Properties-->Resource-->Text file encoding 选择就可以了
java 读取mysql出现中文乱码? 这个是字符集设定出了问题。首先要看你的资料库是什么字符集。mysql 4.x的多用GBK gb2312一类的中文字符集,5.x以后多用utf8的。 在确定了资料库本身的字符集以后,你再确定你前台程式使用的啥语言。一般java预设的就是utf8 如果不是,你就改成和资料库一样的字符集。只有你2个地方的字符集对应了,才能正常显示。
java档案中的中文乱码怎么解决 原因是写入时使用的字元编码和期望的不一致导致的,因为JVM虚拟机器启动时会因不同的引数使用不同的预设字元编码。
资料库汇入sql后中文乱码怎么解决 肯定是它的资料库和你的资料库的编码不一致。 检视他的资料库的编码,比如为A编码。 检视你的资料库的编码,比如为B编码。 用ultraedit开启指令码档案(给你的sql档案),另存为另一个档案(储存时选择你的编码B) 然后再汇入。
在Servlet写插入资料库时出现中文乱码。怎样解决?拜托了各位 谢谢 写入资料库出现中文乱码?你接收的资料就是乱码吧...写入资料库是不会出现这问题的..你自己看看你接收到的资料是不是就乱码了
求高手解决java 读取mysql资料库资料时的中文乱码问题!急 急 急 根据下面这几个步骤,选择操作 ① 首先把MySQL的服务停掉 在执行视窗输入: s mysql ② 把伺服器和客户端的字符集改成自己想用的字符集:GB2312或是utf8等…… 具体操作为:开启mysql安装目录下的myini.tet; 找到default-character-set,将其改为自己想用的字符集:GB2312或是utf8等……,要注意的是这里有两个default-character-set,用ctrl+f定位在档案最前面输入default就会找到,都要改过来; ③ 重启MySQL伺服器,在执行视窗输入: start mysql ④ 最重要的是一点是,到这里我们已经能够解决乱码问题了,可问题是我们依然还会出现乱码问题,这是因为我们现在的表被建立的时候用的是预设的字符集(latin1),所以这时候我们要把表删除,然后重建就可以了
java中输入输出中文乱码,怎么办?
系统问题
你把所有的dos窗口关闭,然后开始-运行
输入
reg add "HKEY_CURRENT_USER\Console" /v "LoadConIme" /d 1 /t REG_DWORD /f
或者开始-运行-regedit
注册表中
HKEY_CURRENT_USER\Console下LoadConIme的值改为1
解决办法:
1.在代码区域右键
->
run
as
->
run
configurations
->
common(右侧)
->
console
encoding
如果出现此错误,此时的编码格式应该是UTF-8,选择Other,这时可能没有GBK选项,如果没有,则执行之后操作。
2.更改该项目的文本文件编码
右键项目==》properties==》Resource==》修改字符集utf-8(Eclipse)
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()), "utf-8");
You might want to change "utf-8" to "gb2312" to support GB encoding.
输出的时候是可以设置编码的
解决办法:
1.在代码区域右键 -> run as -> run configurations -> common(右侧) -> console encoding
如果出现此错误,此时的编码格式应该是UTF-8,选择Other,这时可能没有GBK选项,如果没有,则执行之后操作。
2.更改该项目的文本文件编码,项目右键 -> properties -> resource -> 先将 text file encoding调整回GBK,然后再回去重新设置console encoding编码为GBK。
java swing 界面的中文乱码怎么解决
这个是编码不对造成的。
一般来说,打开window->preferences设置界面
选择genral->workspace将编码设置为utf-8,然后所有的文字编码都会为utf-8
这样就算把程序放到linux下运行,也不会有中文乱码。
不过你首先要保证你的代码文件里面中文不乱码。
如果代码文件里面有中文乱码,去网上找个专门转换编码的软件,转成utf-8就行