问题描述
这是我所做的:
- 我转储了带有UTF-8数据(
sqlite3 example.db .dump > dump.sql
)的sqlite数据库,但是由于这是在powershell中,因此我假设管道将其转换为Windows-1252 - 我再次使用powershell(
Get-Content dump.sql | sqlite3 example2.db
)将转储的数据加载到新数据库中 - 我转储了这个 new 数据库,并留下了一个新的
.sql
文件(这次是通过powershell来 not 的,所以我认为它没有被修改)
这个新的sql文件的UTF-8字符已严重损坏,我想知道是否有办法将其转换回正确的UTF-8。
作为一些示例,以下是 new 文件中的一些序列,以及它们应该是什么(全部视为UTF-8):>
-
ÒüéÒü¬ÒüƒÒü½
应该是あなたに
-
´╝ü
应为全角感叹号 -
Òé¡Òé╗Òé¡
应该是キセキ
有人对我如何撤销这种破坏有任何想法吗?任何方法都将非常有帮助!
这是在Powershell 7.0.1中
编辑:
在进一步检查时,您可以通过将任何此类数据重定向到powershell中的文件来复制我的困境(请注意,数据本身无法输入到powershell中)。因此,设置这样的脚本会得到相同的结果:
test.sh
#!/bin/bash
echo "キ"
然后运行wsl ./test.sh > test.txt
会得到Òé¡
而不是キ
编辑2:
似乎将UTF-8文本转换为的代码页几乎为 437:使用此假设可以还原某些字符(例如木
),而其他字符则不能。如果接近437,但不是,那会是什么?
解决方法
事实证明,因为我在英国,所以我想要的代码页是850。将文件另存为850,然后以UTF-8格式重新加载,解决了我的问题!