Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java apache tomcat和glassfish服务器未解码utf-8字符?_Java_Jsp_Tomcat_Utf 8_Glassfish - Fatal编程技术网

Java apache tomcat和glassfish服务器未解码utf-8字符?

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,

这是我的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,อินเดีย_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字符集编码?尝试此链接中描述的解决方案(第一个答案)