将损坏的字符转换回 UTF-8
Convert mangled characters back to UTF-8
这是我所做的:
- 我转储了一个带有 UTF-8 数据的 SQLite 数据库 (
sqlite3 example.db .dump > dump.sql
),但由于这是在 powershell 中,我假设管道将其转换为 windows-1252
- 我再次使用 powershell (
Get-Content dump.sql | sqlite3 example2.db
) 将转储的数据加载到新数据库中
- 我转储了 new 数据库并留下了一个新的
.sql
文件(这次是 not 通过 powershell - 所以我认为它是未修改的)
这个新 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 文本转换成的代码页是 almost 437:使用此假设恢复了一些字符(例如 木
),但是其他人不是。如果它接近 437,但不是,它会是什么?
事实证明,因为我在英国,所以我想要的代码页是 850。将文件保存为 850,然后将其重新加载为 UTF-8 解决了我的问题!
这是我所做的:
- 我转储了一个带有 UTF-8 数据的 SQLite 数据库 (
sqlite3 example.db .dump > dump.sql
),但由于这是在 powershell 中,我假设管道将其转换为 windows-1252 - 我再次使用 powershell (
Get-Content dump.sql | sqlite3 example2.db
) 将转储的数据加载到新数据库中
- 我转储了 new 数据库并留下了一个新的
.sql
文件(这次是 not 通过 powershell - 所以我认为它是未修改的)
这个新 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 文本转换成的代码页是 almost 437:使用此假设恢复了一些字符(例如 木
),但是其他人不是。如果它接近 437,但不是,它会是什么?
事实证明,因为我在英国,所以我想要的代码页是 850。将文件保存为 850,然后将其重新加载为 UTF-8 解决了我的问题!