![在 Windows 上复制粘贴后,Unicode 字符被替换为问号](https://linux22.com/image/1518453/%E5%9C%A8%20Windows%20%E4%B8%8A%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E5%90%8E%EF%BC%8CUnicode%20%E5%AD%97%E7%AC%A6%E8%A2%AB%E6%9B%BF%E6%8D%A2%E4%B8%BA%E9%97%AE%E5%8F%B7.png)
我遇到了一个奇怪的问题,自从 Windows 8 以来已经存在好几年了(如果我没记错的话,我现在使用的是 Windows 10)。问题似乎只出现在我的办公电脑上。我的其他个人电脑似乎没有问题。起初我并没有想到寻求帮助,因为我找到了一种解决方法 - 我稍后会解释 - 但我认为已经足够了。
基本上,每当我复制和粘贴 Unicode 文本(日语、阿拉伯语等)时,它们都会在粘贴时显示为问号。以下是我将复制的日语文本示例:
何これ?!味道わかない!
粘贴后的效果如下:
?????????!
有趣的是,如果我再次复制完全相同的文本至少一次,它会正确粘贴......
何これ?!味道わかない!
在复制之前从选择中删除哪怕一个字符都会导致问题“重置”。
这是我的解决方法。这并不难,但我总是忘记这样做,因为我的其他电脑运行良好。这增加了更多步骤并浪费了宝贵的时间。
该问题是整个系统的,影响我使用的所有程序和应用程序。
有没有什么办法可以永久解决这个问题?如能得到任何帮助,我们将不胜感激。
答案1
多年来我一直“受”这个问题的困扰,直到 Sanny 在上面的评论中提到“语言环境”,我才知道修复方法如此简单(谢谢 Sanny!)。哈哈!无论如何,如果您遇到与我相同的问题,请按照以下方法修复它:
这适用于 Windows 10(内部版本 15002),但它可能与旧版本(或新版本)的 Windows 类似。
- 转到控制面板中的区域设置。有几种方法可以做到这一点,下面是其中几种。
- 在任务栏上的搜索栏 (Cortana) 中,搜索“控制面板”。在控制面板中,单击更改日期、时间或数字格式在下面时钟、语言和区域在类别视图或地区在图标列表视图中
- 仅限 Windows 10:再次在搜索栏中搜索“区域和语言设置”。这将在“设置”应用中打开“区域和语言”页面。向下滚动,直到找到其他日期、时间和地区设置。然后您可以选择地区在打开的“控制面板”窗口上。
- 打开行政的选项卡并点击更改系统区域设置按钮。选择与当前区域设置不同的区域设置。我选择了日语。我认为选择您经常复制粘贴的语言是最好的,尽管它可能无论如何都相同。单击“确定”确认更改。
- 系统将要求您重新启动,显然您需要这样做才能注意到更改。
- 重启后,测试复制粘贴功能是否能正常工作。如果成功,您可以再次重复上述步骤并切换回您实际需要使用的语言环境。
就这样!尽情复制粘贴吧!;)
答案2
微软的所有产品都符合 Unicode 标准。因此,为了解决这个问题而更改语言环境是没有意义的。
????? 表示 Unicode 或 UTF-8 未被正确识别(而不是被误诊为不同的字符集(可能在程序和剪贴板之间)。
但这似乎是一个真正的错误 - 似乎操作系统第一次认为它是 ASCII,但随后再次尝试使用 UTF-8。Unicode 世界非常复杂 - 要在每个可能的字符集中存储完整的 Unicode,您需要将空间加倍并将所有函数转换为符合 UTF-16 标准 - 这是一项艰巨的任务并且不太实用 - 想象一下转换为 UTF-16/32 所需的存储和处理 - 我们谈论的是您所拥有或查看的每个文档......所以实际上我们使用 UTF-8 将标准 UTF 编码为 8 位。但遗留函数和基于 ASCII 的文档需要转换为 UTF-ASCII 等。我推测这里发生的事情是操作系统错误地“猜测”编码是 ASCII 并使用单独的函数/类进行复制和粘贴(或默认函数/类)。一旦它“意识到”编码是 Unicode,它就会使用该编码。虽然 Unicode UTF-8 是标准,但操作系统平均每种语言有 3-4 种不同的编码需要处理,并且如果事先不知道编码是什么,那么确定编码就非常困难。
从计算机的角度来看,您的字符看起来就像一组预先确定的 1 和 0,并且无法客观地知道正确的转换是什么,例如 01000001 是“A”。它也可能是希伯来语中的 א 或其他字符。Unicode 改变了这一切 - 每个字符都有一个唯一的 8 位分配,这意味着您可以根据编码范围确定它是什么。
因此,错误的复制和粘贴行为可能与 ASCII 的旧功能有关 - 升级应该可以解决问题!