我有一个使用Spring启动1.52版本的Java Web应用程序,并且在应用程序属性文件中,我有此配置连接到postgresql。
spring.datasource.url=jdbc:postgresql://localhost:5432/test_utf8
我有一个模型类,它用Hibernate表示一个表:
@Entity
@Table(name = "coverage")
@Inheritance(strategy = InheritanceType.JOINED)
public class Coverage implements Serializable {
@Column(name = "metadata")
@Lob
private String metadata;
}
这个服务类将Coverage对象保存到数据库。
@Transactional
public interface CoverageRepository extends CrudRepository<Coverage, String> {
}
我使用此存储库服务将 Coverage 对象保存到数据库:
@Service
@Transactional
public class CoverageRepositoryService {
@Autowired
private CoverageRepository coverageRepository;
public void save(Coverage coverage) {
coverageRepository.save(coverage);
}
}
一切都很好,除非元数据具有非ascii字符µ。我在postgresql数据库中查看,它将像这样保存\265,并且在Spring Boot Web应用程序中,它将显示为字符。
Postgresql:
select encode(data, 'escape') from coverage c, pg_largeobject lo
where c.metadata::int=lo.loid
postgresql中的表设置为UTF-8:
psql (9.2.24)
Type "help" for help.
test_utf8=# SHOW SERVER_ENCODING;
server_encoding
-----------------
UTF8
(1 row)
有没有人知道,从Spring靴/冬眠到正确保存这个非ascii字符到postgresql/
更新 1
如果我从@Lob中移除并更改为
@Column(name = "metadata", columnDefinition = "text")
private String metadata;
然后它可以将µ字符精细存储在postgresql中
所以这个@Lob从Hibernate到Postgresql肯定有问题。
我设法找到了问题。这是由于我的java web应用程序的pom.xml文件中的Postgresql JDBC版本
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>
</dependency>
很久以前,Hibernate开发人员从Postgresql中发现了JDBC问题的历史原因:https://hibernate.atlassian.net/browse/HHH-6127
然后,我只需要更新pom。xml到:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
然后它可以将非unicode字符正确保存到数据库中。
问题内容: 我正在尝试解析包含某些非ASCII字符的xml, 代码如下 但它在行“ content = …”上显示了错误,例如 在终端中它正在工作,但是在Eclipse IDE上运行时却给我一个错误。 不知道该如何克服。 问题答案: 您应该定义源代码编码,并将其添加到脚本顶部: 它在控制台和IDE中工作不同的原因可能是由于设置了不同的默认编码。您可以通过运行以下命令进行检查:
问题内容: 我正在使用 mysql dbms存储来自Wikipedia的页面。我已使用指令在my.cnf文件中将字符集编码设置为(维基百科编码): 并使用属性定义创建了我的数据库。 我还通过以下方式更改了mysqld客户端的字符集编码: 在初始化我的jdbc驱动程序时插入属性。 进行查询 但是我注意到mysql服务器用其他字符替换了一些字符。 例如,它替换为。 更新 我已经运行的命令确保这两个和的
我正在从Excel文档中提取文本并将它们作为id3标签添加到一些mp3文件中。我的Excel文档中的大多数字符是俄语(Unicode),但也有一些是英文的。当我运行脚本时,所有英文标签都被正确地写成元数据,但所有俄语字符都显示为问号。如果我在控制台中打印俄语字符,它们会完美地显示出来。为什么它们被写成问号?
问题内容: 我在Matplotlib中显示非ASCII字符时遇到问题,这些字符呈现为小框而不是适当的字体,看起来像(我用红色油漆填充了这些框以突出显示它们): 我如何解决它? 一个相关的问题是 Matplotlib中的重音字符 。 问题答案: 实际上,此问题可能有两个不同的原因: 默认字体不包含这些字形 您可以使用以下方法更改默认字体(在完成任何绘制之前!) 在某些版本的matplotlib中,您
问题内容: 在正则表达式中匹配非ASCII字符的最简单方法是什么?我想在输入字符串中单独匹配所有单词,但是语言可能不是英语,因此我需要匹配ü,ö,ß和ñ。另外,这是在Javascript/ jQuery中,因此任何解决方案都需要适用于此。 问题答案: 应该这样做: 它匹配ASCII字符集(0-127,即0x0至0x7F)中不包含的任何字符。 您可以使用Unicode执行相同的操作: 对于unico
问题内容: 我正在使用从Excel导入一些数据的MySQL数据库。数据包含非ASCII字符(破折号等)以及隐藏的回车符或换行符。有没有办法使用MySQL查找这些记录? 问题答案: 这完全取决于您定义为“ ASCII”的内容,但是我建议尝试这样的查询变体: 该查询将返回columnToCheck包含任何非字母数字字符的所有行。如果还有其他可接受的字符,请将其添加到正则表达式中的字符类。例如,如果句点