Nom*_*n_1 5 c# unix encoding file
我有一个c#程序,我们用它来替换其他值,作为参数后使用.比如'NAME1'替换为&1,'NAME2'替换为&2,依此类推.
问题是要修改的数据是在UNIX上编码的文本文件上,而像í这样的特殊字符,即使在内存中,也会被读作方形(无效字符).由于我无法控制的适当规格,文件无法更改,除此之外别无选择.
我试着阅读大多数130编码c#为我提供:
EncodingInfo[] info = System.Text.Encoding.GetEncodings();
string text;
for (int a = 0; a < info.Length; ++a)
{
text = File.ReadAllText(fn, info[a].GetEncoding());
File.WriteAllText(fn + a, text, info[a].GetEncoding());
}
Run Code Online (Sandbox Code Playgroud)
fn是要读取的文件路径.已经检查了所有制作的文件(如130),没有人正确地写了í所以我的想法,我无法在互联网上找到任何东西.
解:
看起来最终这段代码能够正确地获取文本,还必须为写入部分修复相同的编码器:
System.Text.Encoding encoding = System.Text.Encoding.GetEncodings()[41].GetEncoding();
String text = File.ReadAllText(fn, encoding); // get file text
// DO ALL THE STUFF I HAD TO
File.WriteAllText(fn, text, encoding) System.Text.Encoding.GetEncodings()[115].GetEncoding(); //Latin 9 (ISO)
/* ALL THIS ENCODINGS WORKED APARENTLY FOR ME WITH ALL WEIRD CHARS I WAS ABLE TO WRITE :P
System.Text.Encoding.GetEncodings()[108].GetEncoding(); //Baltic (ISO)
System.Text.Encoding.GetEncodings()[107].GetEncoding(); //Latin 3 (ISO)
System.Text.Encoding.GetEncodings()[106].GetEncoding(); //Central European (ISO)
System.Text.Encoding.GetEncodings()[105].GetEncoding(); //Western European (ISO)
System.Text.Encoding.GetEncodings()[49].GetEncoding(); //Vietnamese (Windows)
System.Text.Encoding.GetEncodings()[45].GetEncoding(); //Turkish (Windows)
System.Text.Encoding.GetEncodings()[41].GetEncoding(); //Central European (Windows) <-- Used this one
*/
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助
诺曼(1)
你必须获得正确的编码格式。尝试
使用文件-i。这将输出文件的 MIME 类型信息,其中还包括字符集编码。我 也找到了它的手册页:)
或者尝试enca
它可以猜测甚至可以在编码之间进行转换。只需查看手册页即可。
如果您有正确的编码格式,请寻找一种将其应用于文件读取的方法。
| 归档时间: |
|
| 查看次数: |
2653 次 |
| 最近记录: |