[英]Encoding for richTextBox
我有第3方庫,該庫返回了一些字符串-“(c)©Microsoft(Microsoft Corporation),2015年。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 我在谷歌搜索如何檢測此文本的編碼,並得到它的cp866並顯示為KOI-7。
我嘗試將其編碼為Windows-1251,並在richTextBox中顯示字符串。 但是我得到了下一個文本-“(c)?RфRя¦рЇ?яcтRЎR¤ў(微軟公司),2015年?''??фячяя©р©?-«。”
輸出文本應為-(c)КорпорацияМайкрософт(Microsoft Corporation),2015年。 Всеправазащищены。
是俄語(西里爾語)
var fromEncodind = Encoding.GetEncoding(866);//from cp866
var bytes = fromEncodind.GetBytes(output);
var toEncoding = Encoding.GetEncoding(1251);//to windows-1251
output = toEncoding.GetString(bytes);
根據此答案,您可以驗證所需的codepage
然后測試字符串。
查找所需的編碼頁面:
const string source = "(c) Љ®аЇ®а жЁп Њ ©Єа®б®дв (Microsoft Corporation), 2015 Ј. ‚ᥠЇа ў § йЁйҐл.";
const string destination = "(c) Корпор ция М йкрософт (Microsoft Corporation), 2015 г. Все пр в з щищены.";
foreach (var sourceEncoding in Encoding.GetEncodings())
{
var bytes = sourceEncoding.GetEncoding().GetBytes(source);
foreach (var targetEncoding in Encoding.GetEncodings())
{
if (targetEncoding.GetEncoding().GetString(bytes) == destination)
{
Console.WriteLine("Source Encoding: {0} TargetEncoding: {1}",sourceEncoding.CodePage,targetEncoding.CodePage);
}
}
}
// Result: Source Encoding: 1251 TargetEncoding: 866
確認您使用的是正確的代碼頁。
然后,您需要獲取字符串:
var decodedCyrillic = Encoding.GetEncoding(866).GetString(Encoding.GetEncoding(1251).GetBytes(source));
您已經很接近了,但是您提供的源字符串中有多余的空間。 這導致了編碼問題。 上面代碼中的源字符串是字符串編碼將識別的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.