导航:首页 > 编程语言 > java判断是否乱码

java判断是否乱码

发布时间:2022-06-20 17:20:23

‘壹’ java如何判断一个文件是否存在乱码

比如一些非法字符是乱码的话,那你就读全部文件,判断里面是否有些字符就好了吧

‘贰’ java判断一段字符串是否包含乱码,不管什么乱码,只要不可读就返回false,怎么写

packagetest;

publicclassLuanMaTest{
publicstaticvoidmain(String[]args){
System.out.println(newLuanMaTest().cclm("ab?c"));;
}

publicbooleancclm(Stringsource){
booleanflag=true;
charws[]=newchar[]{'"','?','',''','&'};
for(inti=0;i<source.length();i++){
charc=source.charAt(i);
for(intj=0;j<ws.length;j++){
charv=ws[j];
if(c==v){
flag=false;
}
}
if((int)c==0xfffd){
flag=false;
}
}
returnflag;
}
}

刚给你写的,已经经过测试,如果对你有用,记得采纳啊,一行一行打的代码,挺辛苦的,哈哈

‘叁’ java:如何判断字符串是不是乱码,请问自动将乱码转换成中文的jar包叫啥子名字啊

源码编译的encoding参数 对应,不会乱码

‘肆’ java 怎么判断文本内容的编码格式

UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, 字节序标志),即0xEF, 0xBB, 0xBF,有的没有。Windows下的txt文本编辑器在保存UTF-8格式的文本文档时会自动添加BOM到文件头。在判断这类文档时,可以根据文档的前3个字节来进行判断。然而BOM不是必需的,而且也不是推荐的。对不希望UTF-8文档带有BOM的程序会带来兼容性问题,例如Java编译器在编译带有BOM的UTF-8源文件时就会出错。而且BOM去掉了UTF-8一个期望的特性,即是在文本全部是ASCII字符时UTF-8是和ASCII一致的,即UTF-8向下兼容ASCII。
在具体判断时,如果文档不带有BOM,就无法根据BOM做出判断,而且IsTextUnicode API也无法对UTF-8编码的Unicode字符串做出判断。那在编程判断时就要根据UTF-8字符编码的规律进行判断了。
UTF-8是一种多字节编码的字符集,表示一个Unicode字符时,它可以是1个至多个字节,在表示上有规律:
1字节:0xxxxxxx
2字节:110xxxxx 10xxxxxx
3字节:1110xxxx 10xxxxxx 10xxxxxx
4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
这样就可以根据上面的特征对字符串进行遍历来判断一个字符串是不是UTF-8编码了。
举例代码:
java.io.File f=new java.io.File("待判定的文本文件名");
try{
java.io.InputStream ios=new java.io.FileInputStream(f);
byte[] b=new byte[3];
ios.read(b);
ios.close();
if(b[0]==-17&&b[1]==-69&&b[2]==-65)
System.out.println(f.getName()+"编码为UTF-8");
else System.out.println(f.getName()+"可能是GBK");
}catch(Exception e){
e.printStackTrace();
}

‘伍’ java读取oracle数据库里面的数据生成xml文件,生成的xml文件出现乱码怎么解决

跟踪问题所在:
1、查询一下数据库,判断在数据库中的时候,是否是已经存在了乱码。
2、在读取到Java的时候,你用SystemOut输出一下,判断这个时候,是否是乱码。
3、写入到xml文件的时候,XML中是否是乱码。
如果是1种情况出现乱码,则是写入数据库的时候出现乱码,需要更改写入程序的代码。
如果是2种情况出现乱码,则是读取Oracle的字符集出现错误,设置读取的字符集。
如果是3种情况出现乱码,则是在Java类中写入的时候,设置字符集,查看数据库字符集,设置为UTF-8、或者是GBK字符集。
希望对你有帮助。

‘陆’ Java判断字符串是否是乱码

java.nio.charset.Charset.forName("GBK").newEncoder().canEncode("测试") //判断是不是GBK编码 即是否乱码
//使用request.getQueryString()获取通过URL传过来的值 有可能是乱码 如:q=鿥
String s = request.getQueryString();
if(s!=null){
if(!(java.nio.charset.Charset.forName("GBK").newEncoder().canEncode(s))){
try {
s = new String(request.getQueryString().getBytes("ISO-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}

‘柒’ java:如何判断字符串是不是乱码

我觉得楼主说的是在WIN下常见的乱码,但这在JAVA中是没有的,因为JAVA用的是UNICODE集.可以参考这里:http://..com/question/31882416.html?si=3
所以设计的是哪种语言,输出的也是哪种语言.就像现在可以直接查看日文网页而不会是乱码一样.
而二楼说的正则表达式就是汉字在UNICODE集中的位置.

‘捌’ java文件中文乱码问题

选中你的文件--右击--属性(properties)--text file encoding 有个default和other 这里选other 然后选UTF-8(你默认的可能是ISO-8859-1的)
然后你把文件中的乱码改回中文 保存~ 这次就不乱码了~

‘玖’ java中文乱码问题

乱码问题也是我一直觉得比较蛋疼的问题,下面是我在网上看到的,楼主可以参考一下
一、Java中文问题的由来

Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。

首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312编译;对于JSP,在文件头加上或基本上就能解决这类乱码问题。

本文要重点讨论的是第二类乱码,即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

net.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)。

4、其他

上面提到的方法应该能解决大部分乱码问题,如果在其他地方还出现乱码,可能需要手动修改代码。解决Java乱码问题的关键在于在字节与字符的转换过程中,你必须知道原来字节或转换后的字节的编码方式,转换时采用的编码必须与这个编码方式保持一致。我们以前使用Resin服务器,使用smartUpload组件上传文件,上传文件同时传递的中文参数获取没有乱码问题。当在Linux中把Resin设置成服务后,上传文件同时的中文参数获取出现了乱码。这个问题困扰了我们很久,后来我们分析smartUpload组件的源文件,因为文件上传采用的是字节流的方式,里面包含的参数名称和值也是字节流的方式传递的。smartUpload组件读取字节流后再将参数名称和值从字节流中解析出来,问题就出现在smartUpload将字节流转换成字符串时采用了系统默认的编码,而将Resin设置成服务后,系统默认的编码可能发生了改变,因此出现了乱码。后来,我们更改了smartUpload的源文件,增加了一个属性charset和setCharset(String)方法,将upload()方法中提取参数语句:

String value = new String(m_binArray, m_startData, (m_endData - m_startData) + 1 );

改成了

String value = new String(m_binArray, m_startData, (m_endData - m_startData) + 1, charset );
出处:http://www.enet.com.cn/article/2008/0229/A20080229170410.shtml

‘拾’ java如果判断一个字符串中是否有乱码

据我所知, 貌似没有这样的解决办法...

从编译器角度来说 , 因为java在得到一个字符串变量的时候, JVM就已经认定它是合法对象了
从业务逻辑上来说 , 什么叫乱码? 有可能是一堆中国人无法正常解读的字符串, 如果是硬性要求的话, 需要参考一些中文的分词器来做了, 例如庖丁解牛.
最后劝您一句, 如果没有硬性要求, 不要继续研究这个了, 没有太大的实际意义.

阅读全文

与java判断是否乱码相关的资料

热点内容
华为服务器有什么好 浏览:699
程序员和测试之间的关系 浏览:945
加密蚊帐什么意思 浏览:149
javalistclear 浏览:607
哪个app上民宿多靠谱 浏览:827
重庆服务器租用哪里有云服务器 浏览:453
土星模拟器文件夹 浏览:902
文件夹文件袋文件盒 浏览:695
云服务器打开f8指令 浏览:243
盈透证券加密币 浏览:72
阿里云服务器初始密码怎么修改 浏览:266
服务器怎么设定公用网络 浏览:99
程序员自己尝尿检测出糖尿病 浏览:593
打印添加pdf 浏览:932
苹果解压专家账号 浏览:844
度晓晓app为什么关闲 浏览:228
net文件是伪编译码吗 浏览:149
伴随矩阵的matlab编程 浏览:63
单片机和h桥是什么意思 浏览:314
51单片机光控设计论文 浏览:653