• 关于

    更改服务器编码en

    的搜索结果

回答

通常,字符äåö没问题,因为浏览器和Web应用程序的tomcat / java使用的默认字符集为latin1即。“理解”这些字符的ISO-8859-1。 要使UTF-8在Java + Tomcat + Linux / Windows + Mysql下工作,需要满足以下条件: 配置Tomcat的server.xml 必须配置连接器使用UTF-8编码url(GET请求)参数: 在上面的示例中,关键部分是URIEncoding =“ UTF-8”。这可以保证Tomcat将所有传入的GET参数处理为UTF-8编码。结果,当用户将以下内容写入浏览器的地址栏时: https://localhost:8443/ID/Users?action=search&name=ж 字符ж被当作UTF-8处理,并被编码为%D0%B6(通常在到达服务器之前由浏览器访问)。 POST请求不受此影响。 CharsetFilter 然后是时候强制Java Web应用程序以UTF-8编码方式处理所有请求和响应了。这要求我们定义一个字符集过滤器,如下所示: package fi.foo.filters; import javax.servlet.*; import java.io.IOException; public class CharsetFilter implements Filter { private String encoding; public void init(FilterConfig config) throws ServletException { encoding = config.getInitParameter("requestEncoding"); if (encoding == null) encoding = "UTF-8"; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain next) throws IOException, ServletException { // Respect the client-specified character encoding // (see HTTP specification section 3.4.1) if (null == request.getCharacterEncoding()) { request.setCharacterEncoding(encoding); } // Set the default response content type and encoding response.setContentType("text/html; charset=UTF-8"); response.setCharacterEncoding("UTF-8"); next.doFilter(request, response); } public void destroy() { } } 此过滤器可确保如果浏览器未设置请求中使用的编码,则将其设置为UTF-8。 该过滤器完成的另一件事是设置默认响应编码,即。返回的html /所使用的编码。另一种方法是在应用程序的每个控制器中设置响应编码等。 该过滤器必须添加到web.xml或webapp的部署描述符中: CharsetFilter fi.foo.filters.CharsetFilter requestEncoding UTF-8 CharsetFilter /* 可以在tomcat Wiki(http://wiki.apache.org/tomcat/Tomcat/UTF-8)中找到有关创建此过滤器的说明。 JSP页面编码 在您的web.xml中,添加以下内容: *.jsp UTF-8 另外,Web应用程序的所有JSP页面都需要在其顶部具有以下内容: <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 如果使用具有不同JSP片段的某种布局,则所有这些都需要。 HTML元标记 JSP页面编码告诉JVM以正确的编码处理JSP页面中的字符。然后是时候告诉浏览器html页面的编码方式了: 这是通过在webapp生成的每个xhtml页面顶部执行以下操作来完成的: ... JDBC连接 使用数据库时,必须定义该连接使用UTF-8编码。可以在context.xml或以下定义了JDBC连接的地方完成: MySQL数据库和表 使用的数据库必须使用UTF-8编码。这是通过使用以下内容创建数据库来实现的: CREATE DATABASE `ID_development` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_swedish_ci */; 然后,所有表也都必须使用UTF-8: CREATE TABLE `Users` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(30) collate utf8_swedish_ci default NULL PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=DYNAMIC; 关键部分是CHARSET = utf8。 MySQL服务器配置 还必须配置MySQL serveri。通常,这是在Windows中通过修改my.ini -file和在Linux中通过配置my.cnf -file来完成的。在这些文件中,应该定义所有连接到服务器的客户端都使用utf8作为默认字符集,并且服务器使用的默认字符集也是utf8。 [client] port=3306 default-character-set=utf8 [mysql] default-character-set=utf8 MySQL的程序和功能 这些还需要定义字符集。例如: DELIMITER $$ DROP FUNCTION IF EXISTS `pathToNode` $$ CREATE FUNCTION `pathToNode` (ryhma_id INT) RETURNS TEXT CHARACTER SET utf8 READS SQL DATA BEGIN DECLARE path VARCHAR(255) CHARACTER SET utf8; SET path = NULL; ... RETURN path; END $$ DELIMITER ; GET请求:latin1和UTF-8 如果并且在tomcat的server.xml中定义了GET请求参数以UTF-8编码时,以下GET请求将得到正确处理: https://localhost:8443/ID/Users?action=search&name=Petteri https://localhost:8443/ID/Users?action=search&name=ж 由于latin1和UTF-8均以相同的方式编码ASCII字符,因此正确处理了字符串“ Petteri”。 拉丁语1完全不了解西里尔字母ж。由于指示Tomcat将请求参数处理为UTF-8,因此它将该字符正确编码为%D0%B6。 如果并且当指示浏览器读取UTF-8编码的页面(带有请求标头和html meta-tag)时,至少Firefox 2/3和此期间的其他浏览器都将字符本身编码为%D0%B6。 最终结果是,找到了所有名称为“ Petteri”的用户,还找到了所有名称为“ж”的用户。 但是äåö呢? HTTP规范定义默认情况下,URL编码为latin1。这导致firefox2,firefox3等对以下内容进行编码 https://localhost:8443/ID/Users?action=search&name=*Päivi* 进入编码版本 https://localhost:8443/ID/Users?action=search&name=*P%E4ivi* 在latin1中,字符ä编码为%E4。即使页面/请求/所有内容都定义为使用UTF-8。ä的UTF-8编码版本为%C3%A4 结果是,由于某些字符在latin1中编码,而另一些字符在UTF-8中编码,因此webapp完全不可能正确地处理GET请求中的请求参数。 注意:如果页面被定义为UTF-8,则POST请求确实可以工作,因为浏览器完全以UTF-8格式编码来自表单的所有请求参数。 读物 非常感谢以下作者为我的问题提供了答案: http://tagunov.tripod.com/i18n/i18n.html http://wiki.apache.org/tomcat/Tomcat/UTF-8 http://java.sun.com/developer/technicalArticles/Intl/HTTPCharset/ http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-tomcat-jsp-etc.html http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-for-mysql-tomcat.html http://jeppesn.dk/utf-8.html http://www.nabble.com/request-parameters-mishandle-utf-8-encoding-td18720039.html http://www.utoronto.ca/webdocs/HTMLdocs/NewHTML/iso_table.html http://www.utf8-chartable.de/ 重要的提示 mysql支持使用3字节UTF-8字符的基本多语言平面。如果您需要超出此范围(某些字母需要超过3个字节的UTF-8字节),则需要使用一种VARBINARY列类型的样式或使用utf8mb4字符集(这需要MySQL 5.5.3或更高版本)。请注意,使用utf8MySQL中的字符集无法100%地工作。 Tomcat与Apache 还有一件事,如果您使用的是Apache + Tomcat + mod_JK连接器,则还需要进行以下更改: 将URIEncoding =“ UTF-8”添加到8009连接器的tomcat server.xml文件中,由mod_JK连接器使用。 转到你的apache文件夹即/etc/httpd/conf添加AddDefaultCharset utf-8在httpd.conf file。注意:首先检查它是否存在。如果存在,您可以使用此行对其进行更新。您也可以在底部添加此行。来源:stack overflow
保持可爱mmm 2020-05-10 17:04:59 0 浏览量 回答数 0

问题

最佳实践多语言网站?mysql

我已经在这个问题上苦苦挣扎了好几个月了,但是以前我从来没有需要探索所有可能的选择的情况。现在,我觉得该是时候了解各种可能性并创建自己的个人喜好了,以便在我即将进行的项目中使用。 首先让我勾勒出我要...
保持可爱mmm 2020-05-18 09:52:23 2 浏览量 回答数 1

问题

PCI远程扫描漏洞补丁如何解决

您好:求助一下,一下问题如何解决 2018-08-07   Scan ID 8238876 Max CVSS 10.0 Scan State Completed Scan Compliance Status F...
1298117508539047 2019-12-01 18:51:40 2296 浏览量 回答数 0

问题

应用 AXIS 开始 Web 服务之旅:报错

一. 介绍 本文并不是想介绍Web服务的原理、系统架构等,我们假设您已经了解了关于Web服务的一些基本的概念、原理等知识。本文主要是针对那些已经了解Web服 务概念,但是还没有亲身体会Web服务...
kun坤 2020-06-08 11:01:46 3 浏览量 回答数 1
阿里云企业服务平台 陈四清的老板信息查询 上海奇点人才服务相关的云产品 爱迪商标注册信息 安徽华轩堂药业的公司信息查询 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 天籁阁商标注册信息 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 北京芙蓉天下的公司信息查询