我正打算写一个SOS问题,但我终于找到了一个解决方案......我不明白。所以这个问题将是:有人可以解释一下吗?
我的应用:播放2 , Ebean 持久性, MS SQL Server 2012 。
在 Akka actor 中,我使用Ebean Entity读取文件并将内容存储在数据库中。没什么了不起的......
文件编码 UTF-8 。即使我试图将所有内容都放在UTF-8中,我也会用
读取文件new InputStreamReader(new FileInputStream(theFile), "UTF-8")
UTF-8不是硬编码的,它是从配置文件中读取的,但我检查过(两次或更多次),值实际上是UTF-8。
我对数据库没有任何控制权。 数据库排序规则为 FRENCH_CI_AS 。
如果我使用-Dfile.encoding=UTF-8
运行我的应用,则持久性无法在数据库中正确编码:é
被?
替换
如果我错了,请纠正我,但这是典型的UTF-8读作ISO-8859-1问题。在调试中,我可以检查文件读取,它似乎是正确读取,没有编码问题。
如果我使用-Dfile.encoding=ISO-8859-1
运行我的应用,一切正常。
此外,在这两种情况下,如果我通过基本表单,控制器和我的存储库持续一些重音,我就没有持久性问题。只有当我在阅读文件后坚持使用actor时才会出现问题。但是再次,我在调试和日志中检查了两次,é
似乎从文件中正确读取。
最后,如果我用错误的编码读取文件
new InputStreamReader(new FileInputStream(theFile), "ISO-8859-1")
并使用-Dfile.encoding=UTF-8
运行我的应用,我的akka演员工作正常,我可以阅读数据库中的é
...
所以我真的很困惑,我不明白发生了什么。有人可以解释一下吗? :(
注意:我使用SQL Server Management Studio检查数据库内容。确实有一些?
,我也可以在我的应用页面中查看它。