Краткое объяснение
Я собираюсь угадать здесь: Ваш браузер отображает страницу, используя неправильную кодировку символов.
Вам необходимо ответить: Какую кодировку символов использует ваш браузер?HTML есть?(Держу пари, это не UTF-8.)
Попробуйте настроить браузер: например, в Firefox это View → Character Encoding, затем выберите кодировку символов, соответствующую вашему документу.
Поскольку у вас, похоже, очень многоязычный документ, ваш вывод C # должен быть в UTF-8 - который поддерживает все символы, известные человеку, включая японский, китайский, латиницу и т. Д. Затем попробуйте указать Firefox, IE, что угодно, использовать UTF-8.Ваш документ должен отображаться.
Если это проблема, вам нужно сообщить браузеру о кодировке вашего документа.Сделайте это ( смотри это ):
- Ваш веб-сервер вернет кодировку символов в заголовках HTTP.
- Указание кодировки символов в
<meta>
tag. - Указание кодировки символов в преамбуле XML для XHTML.
Чем больше вы сделаете, тем лучше.
Длинныйобъяснение
Давайте посмотрим на несколько вещей, которые вы упомянули:
с использованием (StreamWriter sw = новый StreamWriter (outputFile, true, System.Text.Encoding.UTF8)))
и
обнаружили, что при использовании Text.Encoding.Default работали другие западные наборы символов с акцентами (испанские акценты, немецкие умлауты), хотя у японцев по-прежнему возникают проблемы.
Я собираюсь выйти на конечность и сказать, что вы - американский пользователь компьютера.Таким образом, для вас кодировка «по умолчанию» в Windows - это, вероятно, Windows-1252.Кодировка по умолчанию, которую использует веб-браузер, если он не может обнаружить кодировку в документе HTML, - это ISO-8859-1.ISO-8859-1 и Windows-1252 очень похожи, и они оба отображают ASCII плюс некоторые распространенные латинские символы, такие как é, è и т. Д. Более того, акцентированные символы кодируются одинаково, поэтомудля этих символов обе кодировки будут декодировать одни и те же данные.Таким образом, когда вы переключились на «default», браузер правильно декодировал ваши латинские символы, хотя и с неправильной кодировкой.Японский язык не существует ни в ISO-8859-1, ни в Windows-1252, и оба они приведут к тому, что японский язык будет отображаться как случайные символы.(«Мохибаке»)
Тот факт, что вы заметили, что переключение на «по умолчанию» исправляет некоторые символы латинского акцентирования, говорит мне, что ваш браузер использует ISO-8859-1, а это не то, что нам нужно:Мы хотим кодировать текст, используя UTF-8, и нам нужен браузер, чтобы прочитать его обратно как таковой.Смотрите краткое объяснение того, как это сделать.