Java 将mongo值从一种编码转换为另一种编码
我使用java驱动程序将25万条记录放入mongodb,但忘记显式设置编码,因此在windows机器上安装linux之后,系统编码更改为cp1251,我有许多记录的值如下 <代码>П'ЅЅѕѕСЂѕззєз5зґз 我有一个解决方案-只需抛出所有项,查找并修改所有字符串字段:Java 将mongo值从一种编码转换为另一种编码,java,mongodb,encoding,utf-8,cp1251,Java,Mongodb,Encoding,Utf 8,Cp1251,我使用java驱动程序将25万条记录放入mongodb,但忘记显式设置编码,因此在windows机器上安装linux之后,系统编码更改为cp1251,我有许多记录的值如下 П'ЅЅѕѕСЂѕззєз5зґз 我有一个解决方案-只需抛出所有项,查找并修改所有字符串字段: ... mc2.findOneAndUpdate( new Document("canonical", canonical), new Document("$set", new Document
...
mc2.findOneAndUpdate(
new Document("canonical", canonical),
new Document("$set",
new Document("regionName",
new String(doc.getString("regionName").getBytes("cp1251"), "UTF-8"))));
...
有没有一种不用外部程序就能做到这一点的方法?(使用一些mongo js函数、实用程序等)它“应该”存储在UTF-8中。您确定这不是“控制台输出”问题吗?请参阅@NeilLunn,它在mongodb中是utf-8,但Java在那里不是utf8。所以,当我在控制台中用Java检索数据时,一切都很好,但在所有其他程序(python、node、robomongo)中,我看到了thrash。当我在所有程序中更改编码(请参阅代码片段)时,所有数据看起来都很好(当然,如果我不在java中更改编码,java控制台除外)。“你能向服务器发出内部更新的命令吗?”我想这是问题的要点。不,除了
eval()
之外,你真的不能这样做,你真的应该小心处理。当然,这需要能够用JavaScript进行代码页转换,祝你好运!所以,也许有可能,但继续做你正在做的事情肯定更安全。