java - 特殊字符不一致

标签 java spring jsp encoding

您好,我正在构建一个在 Tomcat 6.0.20 和 JDK 1.6.0_19 上运行的 Spring MVC Web 应用程序。当我通过 HTML 表单发送一些特殊字符时,其中一些被存储为问号?

例如,这些符号已正确存储:€、á、é、í、‰ 等 但是有些符号被替换为?喜欢:₤,♪,☺

MySQL 表字符集是 utf-8。我的jsp也是用utf-8

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

我按照建议在 web.xml 中包含了 org.springframework.web.filter.CharacterEncodingFilter here

当我使用 firebug 发送 3 个字符 €a₤ 调试 POST 请求时,我得到:%E2%82%ACa%E2%82%A4 这是正确的,因为 E2 82 AC 是 € 的代码,E2 82 A4 是₤ 的代码,但 ₤ 存储为?在数据库中。 当我将 ₤ 直接保存到数据库中时,它会在网页中正确显示。

我该如何解决这个问题?

最佳答案

有几个区域您需要检查字符编码是否正确完成,因为一些默认为 UTF-8 而其他则没有(例如,iso-8859-1)。检查:

  • JDBC 驱动程序
  • Java 虚拟机(只能解析基于拉丁语和 unicode - 可以运行 native2ascii 将非拉丁字符转换为 unicode)
  • 数据库编码
  • Tomcat/JBoss 等(服务器)
  • 浏览器
  • 操作系统

必须检查所有这些东西让人头疼,但总得有人去做。我建议将所有内容都设置为 UTF-8,因为这是人们普遍同意的

在我看来,JVM 或您的 JDBC 驱动程序可能是问题的根源

关于java - 特殊字符不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706100/

相关文章:

java - spring 框架中 Service 和 DAO 接口(interface)的主要目的是什么?

java - 屏幕关闭/锁定后手机振动停止工作

Java:它创建的定时器和线程

java - 使用 CrudRepository.save(Entity) 使用 spring-data-jdbc 插入具有预定义 @ID 字段的实体

java - 单元测试时如何使用AnnotationConfigWebApplicationContext(Spring框架)加载配置类

java - Android webview进度条无论有没有网络都会持续加载

java - 在 Spring-test 集成测试中 Autowiring HttpServletRequest

java - 在 jSTL 中迭代映射时出错

javascript - 如何在 JSP 中返回 302 HTTP 响应?

jsp - 当属性名称本身是一个动态变量时如何获取bean属性的值