java中主要使用charset这个类来判断文件的编码格式,代码如下:
package com.ghj.packageoftool
import info.monitorenter.cpdetector.io.ASCIIDetector
import info.monitorenter.cpdetector.io.ByteOrderMarkDetector
import info.monitorenter.cpdetector.io.CodepageDetectorProxy
import info.monitorenter.cpdetector.io.JChardetFacade
import info.monitorenter.cpdetector.io.ParsingDetector
import info.monitorenter.cpdetector.io.UnicodeDetector
import java.io.ByteArrayInputStream
import java.io.File
import java.io.InputStream
import java.net.URL
import java.nio.charset.Charset
/**
* 文件工具类
*
* @author 高焕杰
*/
public class FileTool {
/**
* 获取本地文件的编码格式
*
* @param file 要判断的文件编码格式
*
* @author 高焕杰
*/
public static String getLocalFileEncode(File localFile) {
/*
* cpDetector是探测器,它把探测任务交给具体的探测实现类的实例完成。
* cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。
* cpDetector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的字符集编码。cpDetector是基于统计学原理的,不保证完全正确。
*/
CodepageDetectorProxy codepageDetector = CodepageDetectorProxy.getInstance()
codepageDetector.add(new ParsingDetector(false))//ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于指示是否显示探测过程的详细信息,为false不显示。
codepageDetector.add(JChardetFacade.getInstance())//JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
codepageDetector.add(new ByteOrderMarkDetector())
codepageDetector.add(ASCIIDetector.getInstance())//ASCIIDetector用于ASCII编码测定
codepageDetector.add(UnicodeDetector.getInstance())//UnicodeDetector用于Unicode家族编码的测定
Charset charset = null
try {
charset = codepageDetector.detectCodepage(localFile.toURI().toURL())
if (charset != null){
return charset.name()
}
} catch (Exception e) {
e.printStackTrace()
}
return null
}
/**
* 获得远程URL文件的编码格式
*
* @param url 远程文件的URL路径
*
* @author 高焕杰
*/
public static String getURLFileEncode(URL url) {
/*
* cpDetector是探测器,它把探测任务交给具体的探测实现类的实例完成。
* cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。
* cpDetector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的字符集编码。cpDetector是基于统计学原理的,不保证完全正确。
*/
CodepageDetectorProxy codepageDetector = CodepageDetectorProxy.getInstance()
codepageDetector.add(new ParsingDetector(false))//ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于指示是否显示探测过程的详细信息,为false不显示。
codepageDetector.add(JChardetFacade.getInstance())//JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
codepageDetector.add(ASCIIDetector.getInstance())//ASCIIDetector用于ASCII编码测定
codepageDetector.add(UnicodeDetector.getInstance())//UnicodeDetector用于Unicode家族编码的测定
Charset charset = null
try {
charset = codepageDetector.detectCodepage(url)
if (charset != null){
return charset.name()
}
} catch (Exception e) {
e.printStackTrace()
}
return null
}
/**
* 获得文件流的编码格式
*
* @param inputStream 文件流
*
* @author 高焕杰
*/
public static String getInputStreamEncode(InputStream inputStream) {
/*
* cpDetector是探测器,它把探测任务交给具体的探测实现类的实例完成。
* cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。
* cpDetector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的字符集编码。cpDetector是基于统计学原理的,不保证完全正确。
*/
CodepageDetectorProxy codepageDetector = CodepageDetectorProxy.getInstance()
codepageDetector.add(new ParsingDetector(false))//ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于指示是否显示探测过程的详细信息,为false不显示。
codepageDetector.add(JChardetFacade.getInstance())//JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
codepageDetector.add(ASCIIDetector.getInstance())//ASCIIDetector用于ASCII编码测定
codepageDetector.add(UnicodeDetector.getInstance())//UnicodeDetector用于Unicode家族编码的测定
Charset charset = null
try {
charset = codepageDetector.detectCodepage(inputStream, 0)
if (charset != null){
return charset.name()
}
} catch (Exception e) {
e.printStackTrace()
}
return null
}
/**
* 获得字符串的编码格式
*
* @param stringValue 要判断的文件编码格式字符串
*
* @author 高焕杰
*/
public static String getStringEncode(String stringValue) {
/*
* cpDetector是探测器,它把探测任务交给具体的探测实现类的实例完成。
* cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。
* cpDetector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的字符集编码。cpDetector是基于统计学原理的,不保证完全正确。
*/
CodepageDetectorProxy codepageDetector = CodepageDetectorProxy.getInstance()
codepageDetector.add(new ParsingDetector(false))//ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于指示是否显示探测过程的详细信息,为false不显示。
codepageDetector.add(JChardetFacade.getInstance())//JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
codepageDetector.add(ASCIIDetector.getInstance())//ASCIIDetector用于ASCII编码测定
codepageDetector.add(UnicodeDetector.getInstance())//UnicodeDetector用于Unicode家族编码的测定
Charset charset = null
try {
InputStream inputStream = new ByteArrayInputStream(stringValue.getBytes())
charset = codepageDetector.detectCodepage(inputStream, 3)
if (charset != null){
return charset.name()
}
} catch (Exception e) {
e.printStackTrace()
}
return null
}
}
用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),所以这时候我们要把表删除,然后重建就可以了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)