JBoss:如何让UTF-8工作(请求编码)



我有MySQL 5.5墨盒与以下postrongtart_mysql (.openshiftaction_hookspostrongtart_mysql):

echo "********MySQL_config post_start_mysql it's running."/usr/bin/mysql -h "127.8.237.2" -u "adminc5aiLd5" 
         --password="bcHxwMCKLpJ4" -P 3306 
         -e 'SET NAMES "utf8"; SET CHARACTER SET utf8; SET GLOBAL character_set_client=utf8, character_set_database=utf8, character_set_results=utf8, character_set_connection=utf8, character_set_server=utf8, collation_server=utf8_general_ci; SET character_set_client=utf8, character_set_results=utf8, character_set_connection=utf8, character_set_server=utf8, collation_server=utf8_general_ci, collation_database=utf8_general_ci;'

在我的context.xml (webappMETA-INFcontext.xml)中,我有:

<Resource name="jdbc/currencyexchange" 
        auth="Container" 
        type="javax.sql.DataSource"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://x.x.x.x:3306/xxx?autoReconnect=true"
        connectionProperties="useEncoding=true&amp;characterEncoding=UTF-8;"
        username="xxx"
        password="xxx"
        maxActive="100" maxIdle="30" maxWait="10000"
        />

作为结果:

mysql> show variables like '%character%';
+--------------------------+------------------------------------------------+
| Variable_name            | Value                                          |
+--------------------------+------------------------------------------------+
| character_set_client     | utf8                                           |
| character_set_connection | utf8                                           |
| character_set_database   | utf8                                           |
| character_set_filesystem | binary                                         |
| character_set_results    | utf8                                           |
| character_set_server     | utf8                                           |
| character_set_system     | utf8                                           |
| character_sets_dir       | /opt/rh/mysql55/root/usr/share/mysql/charsets/ |
+--------------------------+------------------------------------------------+

我有以下pre_start_jbossews 2.0墨盒(.openshiftaction_hookspre_start_jbossews):

echo "*******jboss_Config pre_start_jboss it's running." 
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dorg.apache.catalina.connector.URIEncoding=UTF-8 -Dorg.apache.catalina.connector.useBodyEncodingForURI=true"

在我的server.xml (.openshiftconfigserver.xml)我有:

<Connector address="${OPENSHIFT_JBOSSEWS_IP}"
               port="${OPENSHIFT_JBOSSEWS_HTTP_PORT}"
               URIEncoding="UTF-8"
               useBodyEncodingForURI="true"
               protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"/>

my web.xml (webappWEB-INFweb.xml):

<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>xx.xxx.xxx.filter.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>
...
<jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <page-encoding>UTF-8</page-encoding>
        </jsp-property-group>
</jsp-config>

CharsetFilter.java:

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
 {
  request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html; charset=UTF-8");
  response.setCharacterEncoding("UTF-8");
  next.doFilter(request, response);
 }
 public void destroy(){}
}

my hibernate prop:

<util:properties id="hibernateProperties">
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
        <prop key="hibernate.connection.CharSet">utf8</prop>
        <prop key="hibernate.connection.characterEncoding">utf8</prop>
        <prop key="hibernate.connection.useUnicode">true</prop>
        <prop key="hibernate.show_sql">false</prop>
    </util:properties>

作为结果:在这里输入图像描述输入图片描述

问题是在请求mysql:

.UpdateClient("update clients set name='???????'....")
如果你们中有人能帮我解决这个问题,我将非常感激。
<Resource name="jdbc/currencyexchange" 
        auth="Container" 
        type="javax.sql.DataSource"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/${OPENSHIFT_APP_NAME}?autoReconnect=true&amp;useEncoding=true&amp;characterEncoding=UTF-8
        username="xxx"
        password="xxx"
        maxActive="100" maxIdle="30" maxWait="10000"
        />

最新更新