mysql - 在数据库中保存塞尔维亚拉丁字符

标签 mysql jsf jdbc character-encoding

我在数据库中保存塞尔维亚拉丁字符时遇到问题,但只有当我从 jsf 应用程序保存它时才会出现问题。当我直接使用 SQLyog 在数据库中插入一些行时,一切都很好。当我尝试从应用程序插入某些内容而不是字符时:数据库中的 čćđ 会插入问号。

另一方面,当我从数据库中读取该行时,所有内容都正确显示,没有问号。

最佳答案

When I try insert something from application instead of characters: č, ć and đ in database are inserted question marks.

换句话说,MySQL JDBC 驱动程序不支持最初提交字符时使用的字符编码。当向数据库发送字符数据时,MySQL JDBC 驱动程序默认使用平台默认编码,例如可以是 ISO 8859-1。您需要通过在 JDBC URL 中指定 useUnicodecharacterEncoding 参数来告诉它不要这样做。

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

当您使用 Facelets 作为 View 技术时,JSF 在呈现 HTML 内容和处理提交的参数值时本身已经默认为 UTF-8。所以问题至少不在那里。

另请参阅:

关于mysql - 在数据库中保存塞尔维亚拉丁字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311462/

相关文章:

MySQL 大于 IN

MySQL左连接自定义查询

jsf - JSF 2.2 中的自定义 FaceletFactory/虚拟主机 facelets 的替代品

java - 可以重定向到 pages.xml 中的两个不同页面吗?

java - JSF 中的 SerializedException

mysql - MySQL InnoDB如何实现Read Uncommitted隔离级别

java - 我可以使用 Spring Framework 分离 JDBC 读取和写入吗?

mysql - 如何在 VBA 中使用 SQL 从表中检索特定值

mysql - 通过has_many关系进行SQL/RoR ActiveRecord聚合查询

java - 使用字符串生成器或存储过程进行单行选择