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