€ = 0x80我的系统是Win2K的,字符集应当是GBK的吧,JVM没做什么设置,应当是Unicode的,应用服务器是Jboss3.0.8带Jetty的,据说是ISO-8859-1的西文字符集。症状:写了个简单的BufferedReader,readLine进来,getByte,发现€算1个byte,Sysout出来个?。但是如果把€写在java源程序里,不但不认,还会把后面1个字符吃掉,比如
String str = "€";
编译通不过,因为javac找不到后面的引号了(why?????)
在jboss里写了个MBean,发现如果有€的行,byte数会少1个,比如"€1234",就变成"?234"了,由于我要做平文件解析,需要按byte数来截字符串,所以这是个很严重的问题,望达人解惑。
String str = "€";
编译通不过,因为javac找不到后面的引号了(why?????)
在jboss里写了个MBean,发现如果有€的行,byte数会少1个,比如"€1234",就变成"?234"了,由于我要做平文件解析,需要按byte数来截字符串,所以这是个很严重的问题,望达人解惑。
解决方案 »
- 为什么用System.exit(0)无法退出?
- java整数类型-byte、short、int、long
- 打印直角三角形的中心对称图形
- 请教Java的逻辑表达式的LL(1)文法?
- 请教:我想获得存储过程的参数,为什么以下代码报错?(采用临时表实现分页)
- ActionListener的问题
- 如何在JTree里根据状态来在节点前显示不同的图片
- 启动TOMCAT 6 报错,求大神指点
- 学java究竟先要学什么?jsp,xml,j2se,javascript,applet....?
- 用oracle.sql.BLOB的getOutputBinaryStream(),向里面写入一个byte[],接进去的是长度一样的全0,怎么回事?
- 能给一个类动态添加方法吗?
- 高分求救!utf-8转gbk编码,奇数个中文字符出现乱码(偶数不会)!!!
String str = "€";
编译通不过,因为javac找不到后面的引号了(why?????)
在jboss里写了个MBean,发现如果有€的行,byte数会少1个,比如"€1234",就变成"?234"了---------------------
编码GB2312无法转换某些特殊字符!
<%@ page contentType="text/html;charset=GB2312"%><%String test="€";%> €不能被GB2312接受<%@ page contentType="text/html;charset=UTF-8"%><%String test="€";%>用utf-8就行了
但是我的文件里还有中文字符,所以必须用gb2312啊,关键是€会带掉1个字符,使得我无法正常判断字符串的长度,如"€1234我",应当是7个byte,结果在JBoss里变成"?234我"只剩6个字符了
但是我的文件里还有中文字符,所以必须用gb2312啊,关键是€会带掉1个字符,使得我无法正常判断字符串的长度,如"€1234我",应当是7个byte,结果在JBoss里变成"?234我"只剩6个字符了
——————————————————————————————————
utf-8可以用中文字符啊!
String temp;
byte[] temp_byte = str.getBytes("ISO8859-1");
temp = new String(temp_byte, "GBK");
return temp;
} catch (Exception e) {
return null;
}
还是不成啊,我用BufferedReader+FileReader读文件,readLine读进1行,需要判断这行的字节数,getBytes()后,如果此行里有1个€,byte数组的长度就会少1。而且我在命令行里运行不会有这个问题,只有在JBoss里才会有这个问题。改用UTF-8后,byte数组的长度加了1,-_-b