0

我在 CodeIgniter 中的文本与具有拉丁字符的文本有问题。

我在inputext中写:Solución并按下按钮保存,但在数据库中出现:solución显然当我在网站上获取数据时显示:solución

我在数据库中插入了这个词más,并在网站上显示más,这不是问题。

我在 Intellij IDEA 12 中使用 JSF、java、openjpa。我使用 MySql,在 sql 脚本中说:

CREATE DATABASE IF NOT EXISTS `ciclos_calidad` /*!40100 DEFAULT CHARACTER SET utf8 */;

我有:

<h:form>
    <h:inputext value="#{hi.word}/>
    <h:commandbutton actionlistener="#{hi.save()}" value="Save"/>
</h:form>

在java中我有:

@ManagedBean(name = "hi")
@ViewScoped
public class hi{

   private String word;
   private HiController hiController;

   @PostConstruct
   public void init(){
    ...
   }
   ...
   /*getter and setter*/
   ...
   public void save(){
    hiController.save(word);
   }
}
4

1 回答 1

1

首先确保您的数据库的编码是 UTF-8,如果问题仍然存在,请使用以下解决方案之一:

1-使用网络过滤器将您的数据编码为 UTF-8。网络过滤器的代码:

    public class CharacterEncodingFilter implements Filter {
    @Override
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    chain.doFilter(request, response);
}

@Override
public void init(FilterConfig filterConfig) throws ServletException {

}

  @Override
   public void destroy() {

      }
 }

和 web.xml:

<filter>
<filter-name>UTFEncodingFilter</filter-name>
<filter-class>filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UTFEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

或者

尝试将您的编码放在服务器配置文件本身中。例如在 glassfish-web.xml 中放置这一行

   <parameter-encoding default-charset="UTF-8"/>
于 2013-11-06T21:06:02.940 回答