gpt4 book ai didi

c# - 将字符串从 CP866 转换为 UTF8

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:45 26 4
gpt4 key购买 nike

我有数据库 (MSSQL),它有一个包含产品名称翻译的表格。其中一种语言是俄语。

使用通用西里尔文解码器的数据库条目 ¸ą¤®åą Øā«ģ 示例 我设法发现它是 Прдохранитль 以及源编码是 CP866,我需要它来获取 WIndows-1257 或utf-8.

如何在 C# 中执行此操作?

我试过类似的东西

string line = "¸ą¤®åą ­Øā«ģ";

Encoding cp866 = Encoding.GetEncoding("CP866");
Encoding w1257 = Encoding.GetEncoding("windows-1257");
byte[] cp866Bytes = cp866.GetBytes(line);
byte[] w1257Bytes = Encoding.Convert(cp866, w1257, cp866Bytes);
var lineFinal = w1257.GetString(w1257Bytes);

谁能帮帮我?

给定代码的结果是 ?a?¤Raa -Oa?<g

最佳答案

先不考虑这样的字符串如何最终出现在数据库中的问题,您可以像这样转换它:

string line = "¸ą¤®åą ­Øā«ģ";
Encoding w1257 = Encoding.GetEncoding("windows-1257");
Encoding cp866 = Encoding.GetEncoding("CP866");
var lineFinal = cp866.GetString(w1257.GetBytes(line));

因为您的原始字符串似乎使用 1257 代码页,而您需要 CP866。

请注意,这个特定的字符串仍然是一个很大的损坏,它导致 Предохр нитель 并且正确的词是 Предохранитель(所以我们用空格代替 а 在索引 8)。然而,原始字符串在这个位置也包含空格,所以这个损坏不是解码的结果(可能你只是将它错误地复制到问题中)。

关于c# - 将字符串从 CP866 转换为 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50326227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com