安卓平板电脑打开JAVA文件乱码该怎么办?
- 格式:doc
- 大小:1.53 KB
- 文档页数:1
Java中文乱码的终极解决方案1. 解决HTML页面中的中文问题为了使HTML页面很好地支持中文,就必须在每个HTML页面的头部增加如下代码:<HEAD><META http-equiv="Content-Type“ content="text/html; charset=UTF-8"></HEAD>2. 解决JSP页面中的中文问题为了使JSP页面很好地支持中文,就必须在每个JSP页面的头部增加如下代码:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>3. 解决HTTP(get/post)请求中的中文问题在默认情况下,IE浏览器发“ISO-8859-1”的编码格式发送请求,如果接收到HTTP的get请求中文参数时出现乱码,可以采用以下方法:1)对其进行Java编码转换,例如:String fieldName = new String(request.getParameter("fieldName").getBytes("ISO-8859-1"),"UTF-8");2) 通过设置Web服务器的编码来解决:a. Tomcat - 修改server.xml文件<Connector port="8080"...URIEncoding="UTF-8"/> <!--增加这项-->b. Resin - 修改resin.conf文件--Resin2.x<host id=''><character-encoding>UTF-8</character-encoding>...</host>--Resin3.x<web-app-default><character-encoding>UTF-8</character-encoding></web-app-default>4. 解决页面数据传输的中文问题为了使中文数据在各页面(组件)之间正常传递,最佳的方法就是采用编码过滤器来解决。
java中的乱码问题汇总及解决⽅案java中的乱码问题最近做项⽬经常会遇到Java中的乱码问题,于是就抽时间整理下出现乱码问题的情况和如何处理,这⾥做了⼀个整理,分析编码与解码 编码就是将字符转为字节,解码就是就是将字节转换为字符。
字节流与字符流 对⽂件的读写操作都是通过字节流来实现的,即使JAVA中有字符流,但是其底层仍然使⽤的字节流。
乱码问题出现 java中使⽤最频繁的是字符,当我们将⽂件读⼊内存并在控制台显⽰时(字节流--->字符流),就需要⽤到解码。
如果⽂件是UTF-8编码,⽽我们解码时错⽤成GBK(如果不指定编码,JAVA会采取系统默认编码)来解码,那么只能显⽰乱码。
⽽我们写⽂件时,最好指定编码(UTF-8)。
解决⽅案⽰例1 将字节流转换为字符流时,我们指定编码格式。
这是我们⽂件也应该是gb2312编码public static String read(String filename) throws Exception {InputStream is = new FileInputStream(filename);BufferedReader in = new BufferedReader(new InputStreamReader(is,"gb2312")); //指定编码格式String s;StringBuilder sb = new StringBuilder();while ((s = in.readLine()) != null) {sb.append(s + "\n");}in.close();return sb.toString();}⽰例2 直接通过字节流读⼊,使⽤String转换为字符时,指定编码。
package com.dy.xidian;import java.io.FileInputStream;import java.io.InputStream;class BufferedInputFile {public static String read(String filename) throws Exception {@SuppressWarnings("resource")InputStream is = new FileInputStream(filename);byte[] b = new byte[1024];is.read(b);return new String(b, "gb2312");}}public class MemoryInput {public static void main(String[] args) throws Exception {String filename = "E:/html/gb2312.php";String s = BufferedInputFile.read(filename);System.out.println(s);}}陷阱 I/O操作中有个FileReader类,这个类隐藏了字节流转为字符流的细节,我们可以这样使⽤。
java中⽂乱码常见解决⽅式说明项⽬出现中⽂乱码现象、常见编码解决⽅法如下。
项⽬乱码项⽬⼯作空间在 Windows -> Prefenrences -> General -> Workspace 中进⾏设置在创建项⽬⼯作空间的时候、优先设置编码,在该⼯作空间下创建的项⽬默认遵循⼯作框架配置项⽬编码在 Project -> Resource中设置创建项⽬的时候、设置编码,则项⽬下⽂件都将会和项⽬统⼀页⾯⽂件编码⽂件右键 Properties -> Resource⽂件头编码⽂件头⼀般是HTML、JSP标签头部添加编码JSP:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>HTML:添加在<head>标签⾥⾯<meta http-equiv="Content-Type" content="text/html; charset=utf-8">编辑器编码设置NotePad++编辑器打开⼀个⽂件时候乱码在 菜单 -> 格式记事本存储时,保存为UTF-8格式服务器乱码SpringMVC在web.xml添加<filter><description>字符集过滤器</description><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><description>字符集编码</description><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>Tomcat编码Tomcat 的 conf/server.conf设置编码、设置为:<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"URIEncoding="UTF-8"redirectPort="8443" />添加:URIEncoding="UTF-8" 属性请求响应编码设置请求、响应编码//设置获取请求的编码request.setCharacterEncoding("utf-8")//设置服务器端的编码response.setCharacterEncoding("utf-8");//通知浏览器服务器发送的数据格式response.setContentType("text/html;charset=utf-8");字符串编码String oldStr = "编码设置";String newStr = new String(oldStr.getBytes(), "UTF-8");System.out.println("UTF-8编码:" + newStr);JDBC 连接指定编码url=jdbc:mysql://127.0.0.1/database?characterEncoding=UTF-8数据库设置编码编码可选:mysql> set character_set_client=utf8;mysql> set character_set_connection=utf8;mysql> set character_set_database=utf8;mysql> set character_set_results=utf8;mysql> set character_set_server=utf8;mysql> set character_set_system=utf8;mysql> set collation_connection=utf8;mysql> set collation_database=utf8;mysql> set collation_server=utf8;数据库表设置编码创建表的时候、指定编码:DEFAULT CHARSET=UTF8;CREATE TABLE `type` (`id` int(10) unsigned NOT NULL auto_increment,`type_name` varchar(50) character set utf8 NOT NULL default '', PRIMARY KEY (`id`)) DEFAULT CHARSET=UTF8;补充如果出现乱码现象、可对应⽂章修改。
JAVA中⽂字符乱码解决详解⾸先要了解JAVA处理字符的原理。
JAVA使⽤UNICODE来存储字符数据,处理字符时通常有三个步骤:– 按指定的字符编码形式,从源输⼊流中读取字符数据– 以UNICODE编码形式将字符数据存储在内存中– 按指定的字符编码形式,将字符数据编码并写⼊⽬的输出流中。
所以JAVA处理字符时总是经过了两次编码转换,⼀次是从指定编码转换为UNICODE编码,⼀次是从UNICODE编码转换为指定编码。
如果在读⼊时⽤错误的形式解码字符,则内存存储的是错误的UNICODE字符。
⽽从最初⽂件中读出的字符数据,到最终在屏幕终端显⽰这些字符,期间经过了应⽤程序的多次转换。
如果中间某次字符处理,⽤错误的编码⽅式解码了从输⼊流读取的字符数据,或⽤错误的编码⽅式将字符写⼊输出流,则下⼀个字符数据的接收者就会编解码出错,从⽽导致最终显⽰乱码。
这⼀点,是我们分析字符编码问题以及解决问题的指导思想。
好,现在我们开始⼀只只的解决这些乱码怪兽。
⼀、在JAVA⽂件中硬编码中⽂字符,在eclipse中运⾏,控制台输出了乱码。
例如,我们在JAVA⽂件中写⼊以下代码:String text = “⼤家好”;System.out.println(text);如果我们是在eclipse⾥编译运⾏,可能看到的结果是类似这样的乱码:。
那么,这是为什么呢?我们先来看看整个字符的转换过程。
1. 在eclipse窗⼝中输⼊中⽂字符,并保存成UTF-8的JAVA⽂件。
这⾥发⽣了多次字符编码转换。
不过因为我们相信eclipse的正确性,所以我们不⽤分析其中的过程,只需要相信保存下的JAVA⽂件确实是UTF-8格式。
2. 在eclipse中编译运⾏此JAVA⽂件。
这⾥有必要详细分析⼀下编译和运⾏时的字符编码转换。
– 编译:我们⽤javac编译JAVA⽂件时,javac不会智能到猜出你所要编译的⽂件是什么编码类型的,所以它需要指定读取⽂件所⽤的编码类型。
Java中文乱码的解决方案jsp+Servlet的形式,在jsp页面向后台发送的请求里包含中文时,后台采用String name = request.getParameter("name")接收到的是乱码,我在网上找了很多资料,有网友说request.getParameter是默认采用ISO8859-1来编码的,必须进行转换:我总结了一下,解决中文乱码大概有以下几种方式:1、采用decode()方法.URLDecoder.decode(s)2、采用设置字符集的方式request.setCharacterEncoding("utf-8");3、在页面上定义charset的字符集<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><meta http-equiv="Content-Type" content="text/html; charset=utf-8">4、在web.xml文件里定义编码,同时在CoreFilter类里定义编码为utf-8<filter><filter-name>encodingFilter</filter-name><filter-class>com.demo.filter.CoreFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>5、在form表单里定义编码accept-charset="utf-8" onsubmit="document.charset='utf-8';"6、更改ContentTypes的值改变myeclipse里ContentTypes的值为utf-87、改变tomcat字符集通过改变server.xml文件里的字符集来接收中文8、采用转码的方式nameCode = new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");补充:如果是Servlet向页面发送的数据中包含中文,可以采用如下方式解决:response.setContentType("text/html;charset=utf-8");。
java中文乱码解决方法Java是一种强大的编程语言,它可以为不同的计算机平台提供稳定可靠的软件开发环境,它也在处理文本文件上有着独特的优势。
但在使用Java处理中文文件时,乱码就成为了一个重大问题,如果不能很好地处理乱码,会影响到Java应用软件的正常使用。
本文给出了3种常用的Java中文乱码解决方案,以帮助相关开发人员快速解决乱码问题。
首先,使用正确的字符集编码将文件保存为指定的编码格式,这可以有效防止中文乱码的出现。
首先,应确保将文本文件保存为国际标准字符集UNIX UTF-8编码。
这是一种任何平台及系统都能够正确执行的字符集,比如Windows系统可以使用ANSI编码,但是在Linux 中会出现乱码问题。
其次,在字符编码方面应尽量使用UTF-8,它可以支持多种字符集,可以为用户提供更丰富的文本文件内容。
此外,为了完全解决Java中文乱码问题,开发者可以利用相关的API来设置不同的编码格式。
例如,开发者可以使用System.setProperty()方法来指定程序的编码格式,即指定文件使用的字符集。
以下是一个简单的示例代码:System.setProperty(file.encoding UTF-8另外,Java还提供了更加强大的控制功能。
它可以为用户提供一种可以自行设置和识别字符集的文件编码类。
例如,使用InputStreamReader和OutputStreamWriter类,开发者可以指定输入和输出的字符集,以进行不同的输入和输出操作,从而得到更加准确的结果,避免出现乱码问题。
以下是一个使用InputStreamReader 和OutputStreamWriter设置字符集的简单示例:InputStreamReader isr = new InputStreamReader(inputStream, UTF-8OutputStreamWriter osw = newOutputStreamWriter(outputStream, UTF-8最后,用户还可以使用相关的第三方软件来解决Java中文乱码问题,这些软件专门设计用于解决文本文件字符集编码的问题,可以自动识别文件的编码格式,并将其转换成指定的编码格式。
如何解决java乱码如何解决java乱码同样的java文件,如果使用不用的工具、编译有可能出现乱码,这是为什么呢?以下是店铺为大家搜索整理的如何解决java乱码,希望能给大家带来帮助!GBK编码GBK编码是中国制订的、等同于UCS的新的中文编码扩展国家标准。
GBK工作小组于1995年10月,同年12月完成GBK规范。
该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。
UTF-8编码UTF-8编码可以通过屏蔽位和移位操作快速读写。
字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。
字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本(见BOM) UTF-8 是字节顺序无关的。
它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。
GB2312GB2312支持的汉字太少。
1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。
汉字区包括21003个字符。
2000年的GB18030是取代GBK1.0的正式国家标准。
该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。
现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。
所以手机、MP3一般只支持GB2312。
从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的',即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。
在这些编码中,英文和中文可以统一地处理。
区分中文编码的方法是高字节的最高位不为0。
按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
1、文件表头添加2、html head里面添加3、获取数据String str=new String(request.getParameter("name").getBytes("ISO8859-1"),"GBK");out.println(str);String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;4、tomcatmaxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"disableUploadTimeout="true" URIEncoding=”UTF-8”/>5、获取数值request.setCharacterEncoding("gbk");。
java中文乱码解决方法1、解决文件中文乱码:1.1、修改文件字符编码:由于不同系统,比如Unix下用GBK格式编辑的文件,在Windows中就会乱码,此时可以使用Notepad++(记事本插件),将文件编码转换为系统默认的utf-8,8为Unicode编码。
1.2、修改系统语言及字符编码:此外,也可以通过改变操作系统的语言及字符编码,这种方法我们可以在控制面板-区域和语言的地方进行修改,再次点击其中的管理,在点击详细设置,这时候就可以看到字符集,将其设置为utf-8。
2、解决程序中文乱码:2.1、使用unicod-8格式编码:在这种情况下,一定要注意程序代码的编码格式,一定要以utf-8格式进行编码,而不是GBK,否则一样会出现乱码。
2.2、设置字符集:有时候,可以在程序中设置语言字符集,例如:response.setContentType("text/html;charset=utf-8");用于普通的JSP页面编码设置,也可以在web.xml中设置characterEncoding3、修改Tomcat的默认编码:可以修改tomcat的server.xml文件,将其默认编码为utf-8,在相应的位置加上URIEncoding="utf-8"。
4、前端乱码解决方法:也可以到浏览器中去修改编码,比如:Firefox浏览器中,可以按Ctrl + U,Chrome可以按Ctrl + U,IE下可以第一个菜单栏中点击View,然后选择Encoding,转换为相应的编码即可。
5、对数据库使用正确的编码:在不同的数据库中当我们有gbk的字符编码的时候,一定要创建数据库时候指定好字符编码,让数据库与整个程序保持一致,如果仅仅程序有编码时,数据库没有则容易出现乱码。
总之,我们在解决Java中文乱码的问题是要以系统- web页面-程序-数据库为关键点进行检查,以确保编码的一致性。
Java乱码问题解决方案.txt生活是一张千疮百孔的网,它把所有激情的水都漏光了。
寂寞就是你说话时没人在听,有人在听时你却没话说了!Java乱码问题解决方案Java乱码问题一直是困扰初学者的一个难题,下面就根据笔者的经验来给大家一个解决方案。
我写了一个Demo的web应用,解决了乱码问题,点击下载1 问题来源Java的乱码问题,根源在于操作系统、数据库(MySQL)、Web服务器(Tomcat)、页面(JSP)中的编码不一致造成的。
例如,mysql的编码是latin1,而页面上字符的编码是GBK,则就会出现乱码问题。
2 解决方案了解了乱码产生的原因,下面就来看一下如何解决乱码。
事实上,只要保证各个环节的编码一致,就不会产生乱码,所以只要将所有的环节,设置的编码为UTF-8,就不会出现乱码了(为了支持国际化,建议统一设置成UTF-8)。
3 mysql数据库编码的设置(以MySQL 5.0.41为例)查看数据库支持的编码:show character set;这样可以查看mysql数据库支持的所有编码,其中可以看到有支持utf8编码。
mysql> show character set ;+----------+-----------------------------+---------------------+--------+| Charset | Description | Default collation | Maxlen |+----------+-----------------------------+---------------------+--------+| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 || dec8 | DEC West European | dec8_swedish_ci | 1 || cp850 | DOS West European | cp850_general_ci | 1 || hp8 | HP West European | hp8_english_ci | 1 || koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 || latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 || ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russian | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 || macroman | Mac West European | macroman_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | binary | Binary pseudo charset | binary | 1 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | +----------+-----------------------------+---------------------+--------+ 36 rows in set (0.00 sec)查看数据库默认的编码: show variables like '%character%'; mysql> show variables like '%character%';+--------------------------+---------------------------------------+| Variable_name | Value |+--------------------------+---------------------------------------+| character_set_client | latin1 || character_set_connection | latin1 || character_set_database | latin1 || character_set_filesystem | binary || character_set_results | latin1 || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | E:\mysql-5.0.41-win32\share\charsets\ |+--------------------------+---------------------------------------+8 rows in set (0.00 sec)可以看到,mysql数据库中,此时有关字符串的设置的参数,其中“character_set_server”为创建数据库是默认的编码,现在需要将其修改为utf8。
如何解决Java中的中文乱码问题?一、中文问题的来源计算机最初的操作系统支持的编码是单字节的字符编码,于是,在计算机中一切处理程序最初都是以单字节编码的英文为准进行处理。
随着计算机的开展,为了适应世界其它民族的语言〔当然包括我们的汉字〕,人们提出了UNICODE编码,它采用双字节编码,兼容英文字符和其它民族的双字节字符编码,所以,目前,大多数国际性的软件内部均采用UNICODE编码,在软件运行时,它获得本地支持系统〔多数时间是操作系统〕默认支持的编码格式,然后再将软件内部的UNICODE转化为本地系统默认支持的格式显示出来。
Java的JDK和JVM即是如此,我这里说的JDK是指国际版的JDK,我们大多数程序员使用的是国际化的JDK版本,以下所有的JDK均指国际化的JDK版本。
我们的汉字是双字节编码语言,为了能让计算机处理中文,我们自己制定的gb2312、GBK、GBK2K等标准以适应计算机处理的需求。
所以,大局部的操作系统为了适应我们处理中文的需求,均定制有中文操作系统,它们采用的是GBK,GB2312编码格式以正确显示我们的汉字。
如:中文Win2K默认采用的是GBK编码显示,在中文WIN2k中保存文件时默认采用的保存文件的编码格式也是GBK的,即,所有在中文WIN2K中保存的文件它的内部编码默认均采用GBK编码,注意:GBK是在GB2312根底上扩充来的。
1由于Java语言内部采用UNICODE编码,所以在JAVA程序运行时,就存在着一个从UNICODE编码和对应的操作系统及浏览器支持的编码格式转换输入、输出的问题,这个转换过程有着一系列的步骤,如果其中任何一步出错,那么显示出来的汉字就会出是乱码,这就是我们常见的JAVA中文问题。
同时,Java是一个跨平台的编程语言,也即我们编写的程序不仅能在中文windows上运行,也能在中文Linux等系统上运行,同时也要求能在英文等系统上运行〔我们经常看到有人把在中文win2k上编写的JAVA程序,移植到英文Linux上运行〕。
安卓平板电脑或智能机上打开java文件就会出现中文内容的乱码,影响阅读,怎么办?笔者知道这是文件编码的问题。
先解释下面阅读时可能会有的疑问,原生java文件都是笔者在电脑上的eclipse 创建的,现在传在手机上用AIDE集成开发软件打开就会乱码。
类似的问题,相信读者也有遇到过,或者读者没有遇到,是好奇心,还是学习。
请继续往下看。
1、把那文件从手机中复制到电脑上,用电脑的自带记事本打开。
方法:鼠标选中要打开的java文件,鼠标右键选择编程或打开方式,在系统已有的程序列表里选择记事本
2、在记事本编程中,我们能看到内容显示正确。
还是要解决以后的内容乱码问题,我们应该这样做,点击菜单栏的文件,再选择另存为
3、接下来,我们只需改动一处再保存即可,其它的都不要改动。
这时我们会看到记事本另存为的文本编码是ANSI ,我们就将其改为UTF-8 ,然后保存,关闭记事本,乱码问题解决成功。
4、把已改好的java文件复制到智能机上打开,看吧,如图,乱码问题已经解决了。
5、另外,如果读者有用eclipse 开发工具,要想将所有的项目java文件编码设置为UTF-8,就这样做,在菜单栏依次点击Windows;Preferences;General;Workspance 即可找到,如图所示,建议在新建项目时去设置,不要在已有项目下设置,否则会出现乱码。
eclipse 在重新创建工程文件时的默认设置就是GBK 编码,笔者对此深感无奈,需要经常去设置。
总结:
1、如果读者有个疑问,可以再打开记事本,另存为看看文件的文本编码是不是UTF-8,如果是,说明文本编码已经改好了。
放回去在智能机上就不会显示乱码,能正确显示。
2、由于安卓系统智能机默认的文本编码是UTF-8,若打开文本编码是ANSI的文件就会出现中文显示乱码。
3、如果是TXT文件内容乱码,可以改为其它的文本编码试试看能否解决乱码问题。