UTF8エンコーディングで保存されたXMLファイルからテキストを読み取りました。 C#はそれを完全に読み取り、デバッガーで確認しましたが、別のファイルに保存するためにASCIIに変換しようとすると、競合する文字があった場所に?文字が表示されます。インスタンス、このテキスト:
string s = "La introducción masiva de las nuevas tecnologías de la información";
として保存されます
"La introducci?n masiva de las nuevas tecnolog?as de la informaci?n"
スペイン語の一部の単語は意味を見逃してしまうため、ラテン語(a、e、i、o、u)の母音に置き換えることはできません。私はすでに this と this の質問を試しましたが成功しませんでした。だから私は誰かが私を助けることができることを願っています。 2番目の選択された答えはコンパイルさえしませんでした...!
誰かが見てみたい場合のために、私のコードはこれです:
private void WriteInput( string input )
{
byte[] byteArray = Encoding.UTF8.GetBytes(input);
byte[] asciiArray = Encoding.Convert(Encoding.UTF8, Encoding.ASCII, byteArray);
string finalString = Encoding.ASCII.GetString(asciiArray);
string inputFile = _idFile + ".in";
var batchWriter = new StreamWriter(inputFile, false, Encoding.ASCII);
batchWriter.Write(finalString);
batchWriter.Close();
}
これらの文字にはASCIIでのマッピングはありません。 ASCIIテーブル、 Wikipedia's など)を確認して、これを確認します。Windows1252エンコーディング、または「拡張ASCII」と呼ばれることもあるので、興味があるかもしれません。スペイン語を含む多くのアクセント付き文字のコードポイントがあります。
var input = "La introducción masiva de las nuevas tecnologías de la información";
var utf8bytes = Encoding.UTF8.GetBytes(input);
var win1252Bytes = Encoding.Convert(
Encoding.UTF8, Encoding.GetEncoding("windows-1252"), utf8bytes);
File.WriteAllBytes(@"foo.txt", win1252Bytes);
できません。 ASCIIにはこれらの文字がないため、URLエンコードまたはUnicodeエスケープエンコードするのが最善の方法です。