Как и следовало ожидать, я имею дело с устаревшим веб-приложением, которое в основном использует Windows-1252 в качестве набора символов.
Я также написал небольшой набор библиотек, в том числе один, содержащий акценты. Эти файлы находятся в кодировке UTF-8 и включены в устаревший код. И вот я здесь :
.------------. .-----------------. | UTF-8 | | Windows-1252 | |------------| |-----------------| | Dim str | <-------- inclusion -------- | Dim str2 | | str = "é" | | str2 = "è" | |____________| |_________________|
Похоже, что str2
будет обрабатываться так, как если бы "è"
было закодировано как UTF-8, хотя это не так.
Я знаю, что литералы, отличные от ASCII, не должны быть написаны в коде, но это наследие. Более того, я признаю, что мне не очень хочется даунгрейд преобразовывать файлы UTF-8 в Windows-1252. Также я ищу чистый способ сообщить движку правильную кодировку строковых литералов, прежде чем преобразовывать их во внутреннее представление. Response.Codepage
не кажется актуальным или работающим. Есть ли другой чистый способ решить эту проблему, не превращая новые файлы в кодировку Windows-1252?
@CodePage = <numeric codepage>
, чтобы указать IIS, как обрабатывать файл, и убедиться, что файл ASP сохранен в правильной кодировке, соответствующей директиве.Response.CodePage
сообщает ASP, как возвращать ответы, а не обрабатывать их в первую очередь. Некоторые рекомендации здесь - person user692942   schedule 01.03.2016@CodePage
нельзя использовать более одного раза. - person Amessihel   schedule 01.03.2016Response.CodePage
в сочетании сResponse.Write
. Помните, что ответ HTTP должен содержать только одну кодовую страницу после отправки ответа клиенту, иначе вы получите несоответствие кодировки по месту. Директива@codepage
всегда должна соответствовать физической кодировке файла, поэтому никогда не потребуется больше одного раза, один файл может быть закодирован только одним способом. - person user692942   schedule 01.03.2016@codepage
, хотя это невозможно. (Извините за неправильное написание вашего никнейма.) - person Amessihel   schedule 01.03.2016@Codepage
в первой строке включаемого файла, 2/Response.CodePage
в каждом включаемом файле? - person Amessihel   schedule 01.03.2016#include
файлах?... правила являются родительскими. Файл ASP содержит директиву@codepage
, указывающую на ту же кодировку, которая использовалась для сохранения этого физического файла. Включения, указанные в этом файле, должны соответствовать кодировке родителя и директиве@codepage
, иначе вы получите несоответствие кодировки. Только родительский файл ASP может содержать директиву@codepage
. Может быть полезно Установка кодовой страницы для преобразования строк< /а> - person user692942   schedule 01.03.2016#include
файлы, которые соответствуют кодировке родительского файла ASP, в который вы их включаете. Иногда это неясно, потому что большинство символов ASCII сопоставляются, как для, как для UTF-8, но другие наборы символов, такие как восточноевропейские, вы начнете замечать проблему с некоторыми знаками с акцентом. Теоретически вы можете просто выдумывать это и надеяться, что это сработает, но позже это может привести к большому количеству боли. - person user692942   schedule 01.03.2016