(JSP)将UTF8写入MySQL-won';行不通
我正在尝试使用JSP(JSTL)将俄语字符写入MySQL5.5。 虽然它在我自己的本地主机上工作,但我无法让它在我租用的服务器上工作 它将正确的参数从一个表单发送到另一个页面,然后该页面将正确显示输出。这也适用于服务器。 在数据库中写入/读取数据只能在我自己的本地主机上工作 如果我试图在服务器上写入DB,俄语字符会变成问号。但是,我可以使用phpMyAdmin存储俄语字符,然后在我的网页上正确显示 以下是我的问题和我迄今为止所做的尝试: 查询: 我想我的问题出在MySQL连接器的某个地方。我不太明白如何更改它,因为我没有访问mysql的配置文件的权限。我请求SSH访问,如果这对我有帮助的话。我对这些问题还相当陌生,因为我已经很久没有处理数据库,尤其是服务器了 phpMyAdmin显示:(JSP)将UTF8写入MySQL-won';行不通,mysql,jsp,tomcat,utf-8,jstl,Mysql,Jsp,Tomcat,Utf 8,Jstl,我正在尝试使用JSP(JSTL)将俄语字符写入MySQL5.5。 虽然它在我自己的本地主机上工作,但我无法让它在我租用的服务器上工作 它将正确的参数从一个表单发送到另一个页面,然后该页面将正确显示输出。这也适用于服务器。 在数据库中写入/读取数据只能在我自己的本地主机上工作 如果我试图在服务器上写入DB,俄语字符会变成问号。但是,我可以使用phpMyAdmin存储俄语字符,然后在我的网页上正确显示 以下是我的问题和我迄今为止所做的尝试: 查询: 我想我的问题出在MySQL连接器的某个地方。我不太
character set client - latin1, (session value - utf8)
character set connection - latin1, (session value - utf8)
character set database - latin1
character set results - latin1, (session value - utf8)
character set server - latin1
character set system - utf8
collation connection - latin1_swedish_ci (session value - utf8_unicode_ci)
collation database - latin1_swedish_ci
collation server - latin1_swedish_ci
我希望你能建议我该怎么做…我自己想出来的。
仅仅取消对CharacterEncoding筛选器的注释是不够的。
我还必须在我的webapp中实现一个过滤器。
代码如下:
package filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
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() {
}
}
在web.xml中不要忘记它:
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>filters.CharsetFilter</filter-class>
<init-param>
<param-name>requestEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
字符集过滤器
filters.CharsetFilter
请求编码
UTF-8
字符集过滤器
/*
谢谢您的帮助,Balus,我可以通过使用servlet来确定utf8的进出。
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8"
/>
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
CREATE TABLE `Question` (
`questionID` int(6) unsigned NOT NULL AUTO_INCREMENT,
`question` varchar(255) DEFAULT NULL,
`categoryID` int(6) unsigned DEFAULT NULL,
PRIMARY KEY (`questionID`),
KEY `categoryID` (`categoryID`),
CONSTRAINT `question_ibfk_1` FOREIGN KEY (`categoryID`) REFERENCES `Category` (`categoryID`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
character set client - latin1, (session value - utf8)
character set connection - latin1, (session value - utf8)
character set database - latin1
character set results - latin1, (session value - utf8)
character set server - latin1
character set system - utf8
collation connection - latin1_swedish_ci (session value - utf8_unicode_ci)
collation database - latin1_swedish_ci
collation server - latin1_swedish_ci
package filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
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() {
}
}
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>filters.CharsetFilter</filter-class>
<init-param>
<param-name>requestEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>