Java apache tomcat和glassfish服务器未解码utf-8字符?
这是我的Jsp页面:Java apache tomcat和glassfish服务器未解码utf-8字符?,java,jsp,tomcat,utf-8,glassfish,Java,Jsp,Tomcat,Utf 8,Glassfish,这是我的Jsp页面: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <% String msg="206_John_help i m in trouble,delhi,
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
String msg="206_John_help i m in trouble,delhi,อินเดีย_30.64741430_76.817313799";
String result = java.net.URLEncoder.encode(msg, "UTF-8");
System.out.println("The msg is "+result);
String result1=java.net.URLDecoder.decode(result, "UTF-8");
System.out.println("The decoded msg is "+result1);
%>
</body>
</html>
JSP页面
输出为206_John_help i in trouble,德里,30.64741430_76.817313799
我总是得到什么??????而不是泰语字母。解码时如何获取泰语字母?您可以尝试在顶部添加以下内容:
<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
我认为这将解决问题。如果没有,你能给我们更多的信息吗
您正在使用eclipse吗?如果是,您是否在windows下开发?
在windows中,eclipse默认使用windows CP1252编码来处理jsp和其他文件。可能编写的文本可以是CP1252字符集
你在哪里跑tomcat和glashfish?窗户?Linux 能否检查netbeans中的jsp字符集编码?。我认为这就是问题所在。
Try to call these 2 methods before encoding and decoding.
String msg="206_John_help i m in trouble,delhi,อินเดีย_30.64741430_76.817313799";
String result = java.net.URLEncoder.encode(convertFromUTF8(msg), "UTF-8");
System.out.println("The msg is "+result);
String result1=java.net.URLDecoder.decode(convertToUTF8(result), "UTF-8");
System.out.println("The decoded msg is "+result1);
/* convert from UTF-8 encoded HTML-Pages -> internal Java String Format */
public static String convertFromUTF8(String s) {
String out = null;
try {
out = new String(s.getBytes("ISO-8859-1"), "UTF-8");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
/* convert from internal Java String Format -> UTF-8 encoded HTML/JSP-Pages */
public static String convertToUTF8(String s) {
String out = null;
try {
out = new String(s.getBytes("UTF-8"));
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
可能JSP是在windows字符集中编译的,这意味着msg字符串值将在windows字符集中编译,然后用JSP编写的文本将在该字符集中编码
尝试将netbeans配置为以utf-8字符集而不是windows cp1252编译jsp,然后重试。尝试编写包含泰国字符的
hello.html
,将其置于文件系统和tomcat下,并尝试使用浏览器打开它。在这种情况下,您能正确地看到泰语字符吗?我将glassfish作为本地服务器运行,而apache tomcat作为在线服务器。不,我没有使用eclipse,我使用的是netbeans。上述解决方案不起作用。我使用的是Windows在内部定义这些方法,并在jspIt中的任何位置调用它。编译1源文件时出现异常C:\Users\Java\Documents\NetBeansProjects\demos\build\generated\classes C:\Users\Java\Documents\NetBeansProjects\demos\build\generated\src\org\apache\jsp\new\u 0020jsp1\u jsp.Java:57:错误:找不到符号NewClass1 nw=NewClass1();^symbol:class NewClass1位置:class new\U 0020jsp1\U jsp C:\Users\Java\Documents\NetBeansProjects\demos\build\generated\src\org\apache\jsp\new\U 0020jsp1\U jsp.Java:57:错误:找不到symbol NewClass1 nw=new NewClass1();^符号:新班级你从哪里得到新班级。要么传递完整代码,要么告诉详细信息。我给你的解决方案是有效的,只有当你没有将服务器配置为UTF-8时才需要。要么转到服务器。xml并将连接器更改为接受UTF-8。如何检查netbeans中的jsp字符集编码?尝试此链接中描述的解决方案(第一个答案)