西班牙语字符问题á,é,í,ó,ú,ñ

时间:2013-11-06 03:41:19

标签: jsf jsf-2 character-encoding

我在使用具有拉丁字符的文本时遇到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);
   }
}

1 个答案:

答案 0 :(得分: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"/>