Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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/JSP中处理西班牙语字符_Java_Jsp_Tomcat_Character Encoding_Tomcat6 - Fatal编程技术网

在Java/JSP中处理西班牙语字符

在Java/JSP中处理西班牙语字符,java,jsp,tomcat,character-encoding,tomcat6,Java,Jsp,Tomcat,Character Encoding,Tomcat6,我有一个小的webapp,可以处理大量的西班牙语文本 在代码中的某一点上,一个JSP页面响应一个JsonString,其中包含一些文本。如果我将字符串打印到控制台,它看起来像jibberish。但是如果我在Chrome开发者工具中检查响应的标题/内容,它看起来是正确的。它以正确的编码传输。webapp的这部分功能与预期一样 在代码的另一点上,另一个JSP页面以HTML响应。其中一些HTML包含更多的西班牙语文本。这一次,文本被传输(并显示)为jibberish 可能发生这种情况的潜在原因是什么?

我有一个小的webapp,可以处理大量的西班牙语文本

在代码中的某一点上,一个
JSP
页面响应一个
Json
String
,其中包含一些文本。如果我将
字符串打印到控制台,它看起来像jibberish。但是如果我在Chrome开发者工具中检查响应的标题/内容,它看起来是正确的。它以正确的编码传输。webapp的这部分功能与预期一样

在代码的另一点上,另一个
JSP
页面以
HTML
响应。其中一些
HTML
包含更多的西班牙语文本。这一次,文本被传输(并显示)为jibberish

可能发生这种情况的潜在原因是什么?两次,我都只是使用
out.print
打印文本。为什么它在某一点上有效,而在另一点上无效

示例:

// In a file who's only output is the json string
String jsonString = ...
System.err.println(jsonString); // prints jibberish
out.println(jsonString); // looks correct when the response is viewed in Chrome Developer tools, and looks correct in a browser

...

// In a file who's output is a complete html page
String spanishText = ...
out.println("<label>" + spanishText + "</label>"); // looks like jibberish when the response is viewed in Chrome developer tools, and shows up as jibberish in a browser
//文件中唯一的输出是json字符串
字符串jsonString=。。。
System.err.println(jsonString);//印出吉伯里什语
out.println(jsonString);//在Chrome Developer tools中查看响应时显示正确,在浏览器中显示正确
...
//在一个文件中,谁的输出是一个完整的html页面
字符串spanishText=。。。
out.println(“+spanishText+”);//在Chrome developer tools中查看响应时看起来像jibberish,在浏览器中显示为jibberish

您需要设置JSP/Servlet响应用于打印字符的编码,并指示webbrowser使用相同的编码

这可以通过将其放在JSP的顶部来实现:

<%@ page pageEncoding="UTF-8" %>
使用
System.err时的“jibberish”是另一个问题。您需要设置用于将此信息打印到的控制台/日志文件的编码。如果它是例如Eclipse,那么您可以通过窗口>首选项>常规>工作区>文本文件编码来设置它

另见:

您需要设置JSP/Servlet响应用于打印字符的编码,并指示webbrowser使用相同的编码

这可以通过将其放在JSP的顶部来实现:

<%@ page pageEncoding="UTF-8" %>
使用
System.err时的“jibberish”是另一个问题。您需要设置用于将此信息打印到的控制台/日志文件的编码。如果它是例如Eclipse,那么您可以通过窗口>首选项>常规>工作区>文本文件编码来设置它

另见:

我试过这个,但似乎不起作用。如果我在Chrome中查看请求头,则正确指定了
内容类型(
text/html;charset=UTF-8
),但如果我查看请求内容,它仍然是jibberish(即
tiles
,而不是
tiles
),并且在浏览器中显示为jibberish
也很重要。当您使用
FileReader/FileInputStream
等从其他源读取字符串时,还需要考虑其编码。另请参见链接文章的第页。从上到下阅读,你会更好地理解“在遮光罩下”会发生什么。这种理解对于解决问题非常重要。我试过了,但似乎不起作用。如果我在Chrome中查看请求头,则正确指定了
内容类型(
text/html;charset=UTF-8
),但如果我查看请求内容,它仍然是jibberish(即
tiles
,而不是
tiles
),并且在浏览器中显示为jibberish
也很重要。当您使用
FileReader/FileInputStream
等从其他源读取字符串时,还需要考虑其编码。另请参见链接文章的第页。从上到下阅读,你会更好地理解“在遮光罩下”会发生什么。这种理解对于解决问题非常重要。