将变形的字符转换回UTF-8

问题描述

这是我所做的:

  1. 我转储了带有UTF-8数据(sqlite3 example.db .dump > dump.sql)的sqlite数据库,但是由于这是在powershell中,因此我假设管道将其转换为Windows-1252
  2. 我再次使用powershell(Get-Content dump.sql | sqlite3 example2.db)将转储的数据加载到新数据库
  3. 我转储了这个 new 数据库,并留下了一个新的.sql文件(这次是通过powershell来 not 的,所以我认为它没有被修改

这个新的sql文件的UTF-8字符已严重损坏,我想知道是否有办法将其转换回正确的UTF-8。

作为一些示例,以下是 new 文件中的一些序列,以及它们应该是什么(全部视为UTF-8):>

  1. ÒüéÒü¬ÒüƒÒü½ 应该是 あなたに
  2. ´╝ü 应为全角感叹号
  3. Òé¡Òé╗Òé¡ 应该是 キセキ

有人对我如何撤销这种破坏有任何想法吗?任何方法都将非常有帮助!

这是在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格式重新加载,解决了我的问题!