public static ByteToCharConverter getDefault();
public static ByteToCharConverter getConverter(String encoding);
假如你不指定converter,则系统会自动使用当前的encoding,gb平台上用gbk,en平台上用8859_1。 String encoding = "gb2312";
byte b[] = {(byte)'/u00c4',(byte)'/u00e3'};
ByteToCharConverter converter = ByteToCharConverter.getConverter(encoding);
char c[] = converter.convertAll(b);
for (int i = 0; i < c.length; i++) {
System.out.PRintln(Integer.toHexString(c[i]));
}
结果是什么?0x4f60 byte b[] = {(byte)'/u00c4',(byte)'/u00e3'};
ByteToCharConverter converter = ByteToCharConverter. getDefault();
char c[] = converter.convertAll(b);
for (int i = 0; i < c.length; i++) {
System.out.println(Integer.toHexString(c[i]));
}
结果将又是什么?根据平台的编码而定。 char ——〉byte:
String encoding = "gb2312";
char c[] = {'/u4f60'};
CharToByteConverter converter = CharToByteConverter.getConverter(encoding);
byte b[] = converter.convertAll(c);
for (int i = 0; i < b.length; i++) {
System.out.println(Integer.toHexString(b[i]));
}
结果是什么?0x00c4,0x00e3 String encoding = "gb2312";
char c[] = {'/u4f60'};
CharToByteConverter converter = CharToByteConverter.getDefault();
byte b[] = converter.convertAll(c);
for (int i = 0; i < b.length; i++) {
System.out.println(Integer.toHexString(b[i]));
}
结果将又是什么?根据平台的编码而定。 String encoding = “”;
byte [] b={(byte)'/u00c4',(byte)'/u00e3'};
String str=new String(b,encoding);
假如encoding=8859_1,会有两个字,但是encoding=gb2312只有一个字这个问题在处理分页是经常发生 。 String encoding = "gb2312";
InputStreamReader reader = new InputStreamReader(new FileInputStream(
"text.txt"), encoding);
char c[] = new char[10];
int length = reader.read(c);
for (int i = 0; i < length; i++) {
System.out.println(c[i]);
}
结果是什么?你 String str = "你";
FileWriter writer = new FileWriter("text.txt");
write.write(str);
writer.close();
假如用gb2312编译,你会找到e4 bd a0的字段 ; <web-app>
<filter>
<filter-name>RequestFilter</filter-name>
<filter-class>net.golden.uirs.util.RequestFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>RequestFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain fChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
Httpsession session = request.getSession();
String userId = (String) session.getAttribute("userid");
req.setCharacterEncoding(this.filterConfig.getInitParameter("charset")); // 设置字符集?
实际上是设置了byte ——〉char的encoding
try {
if (userId == null userId.equals("")) {
if (!request.getRequestURL().toString().matches(
".*/uirs/logon/logon(Controller){0,1}//x2Ejsp$")) {
session.invalidate();
response.sendRedirect(request.getContextPath() +
"/uirs/logon/logon.jsp");
}
}
else { // 看看是否具有信息上报系统的权限
if (!net.golden.uirs.util.UirsChecker.check(userId, "信息上报系统",
net.golden.uirs.util.UirsChecker.ACTION_DO)) {
if (!request.getRequestURL().toString().matches(
".*/uirs/logon/logon(Controller){0,1}//x2Ejsp$")) {
response.sendRedirect(request.getContextPath() +
"/uirs/logon/logonController.jsp");
}
}
}
}
catch (Exception ex) {
response.sendRedirect(request.getContextPath() +
"/uirs/logon/logon.jsp");
}
fChain.doFilter(req, res);
}
新闻热点
疑难解答