一部の値を他の値に置き換えて、後でパラメーターとして使用するために使用する c# プログラムがあります。「NAME1」が &1 に、「NAME2」が &2 に、というように置き換えられます。
問題は、変更するデータが UNIX でエンコードされたテキスト ファイル上にあり、メモリ上であっても í などの特殊文字が正方形 (無効な文字) として読み取られることです。私の手に負えない仕様のため、ファイルは変更できず、そのように読むしかありません。
私は、c# が提供する 130 のエンコーディングのほとんどを読み取ろうとしました。
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());
}
fn は、読み取るファイル パスです。作成されたすべてのファイル (130 など) をチェックしましたが、誰も適切に書いていないので、アイデアがなく、インターネット上で何も見つけることができません。
解決:
最後に、このコードはテキストを適切に取得する作業を行ったように見えます。また、Writing 部分の同じエンコーダーを修正する必要がありました。
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
*/
ご助力ありがとうございます
ノーマン(1)