我试图将存储在数据库中的一些字符串的旧应用程序转换为ASCII.
例如,字符串:ƒ`ƒƒƒlƒ<ƒp[ƒgƒi[,Ì'I'ð]存储在数据库中.
现在,如果我在文本编辑器中复制该字符串并将其保存为ASCII,然后在Web浏览器中打开该文件并将其设置为自动检测编码,我会在日语中获得正确的字符串:チャネルパートナーの选択,以及页面说检测到的编码是日语(Shift_JIS).
当我尝试在C#代码中进行转换时,执行以下操作:
var asciiBytes = Encoding.ASCII.GetBytes(text);
var japaneseEncoding = Encoding.GetEncoding(932);
var convertedBytes = Encoding.Convert(japaneseEncoding, Encoding.ASCII, asciiBytes);
var japaneseString = japaneseEncoding.GetString(convertedBytes);
Run Code Online (Sandbox Code Playgroud)
我明白了吗?`??? ????????????????? 作为日语字符串,因此我无法在网页上显示它.
任何光都会受到赞赏.
谢谢
一些字符串以ASCII格式存储在数据库中
它不是ASCII,关于ƒ`ƒƒƒlƒ中没有任何字符[ƒgƒi[,Ì'I'ð是ASCII.Encoding.ASCII.GetBytes(text)会产生很多吧?字符,这就是你得到所有这些问号的原因.
核心问题是dbase列中的字节是使用错误的编码读取的.您使用了代码页1252:
var badstringFromDatabase = "ƒ`ƒƒƒlƒ‹ƒp[ƒgƒi[‚Ì‘I‘ð";
var hopefullyRecovered = Encoding.GetEncoding(1252).GetBytes(badstringFromDatabase);
var oughtToBeJapanese = Encoding.GetEncoding(932).GetString(hopefullyRecovered);
Run Code Online (Sandbox Code Playgroud)
产生"チャネルパートナーの选択"
这不是完全可靠的,代码页1252具有一些在932中使用的未分配代码.您将最终得到一个乱码字符串,您无法再从中恢复原始字节值.您需要专注于让数据提供程序使用正确的编码.
| 归档时间: |
|
| 查看次数: |
10236 次 |
| 最近记录: |