Twój kod jest prawidłowy, chociaż ja wolę, aby ustawić kodowanie znaków w kodzie zamiast użyć tagu meta: -
<% Response.CharSet = "UTF-8" %>
kodowa 65001 odnosi się do zestawu znaków UTF-8. Musisz się upewnić, że twoja strona asp (i jakiekolwiek inne) są zapisywane jako UTF-8, jeśli zawierają dowolne znaki spoza standardowego zestawu znaków ASCII.
Po określeniu atrybutu CODEPAGE w bloku <% @ wskazuje się, że cokolwiek napisane za pomocą Response.Write powinno być zakodowane na określonej stronie kodowej, w tym przypadku 65001 (utf-8). Warto pamiętać, że nie ma to wpływu na zawartość statyczną, która jest wysyłana dosłownym bajtem dla bajtu odpowiedzi. Stąd też powód, dla którego plik musi zostać faktycznie zapisany przy użyciu podanej strony kodowej.
Właściwość CharSet odpowiedzi ustawia wartość CharSet nagłówka Content-Type. Nie ma to wpływu na sposób, w jaki treść, którą zakodowałem, jedynie informuje klienta, jakie kodowanie jest odbierane. Ponownie ważne jest, aby jego wartość była zgodna z faktycznym wysłanym kodowaniem.
W jaki sposób jest strona kodowa "dziedzictwo"? – AnthonyWJones
Historycznie teksty miały * stronę kodową *, która po prostu określała, który zestaw znaków ma być użyty. Te miały pewną liczbę, która różniła się od dostawcy do dostawcy, Windows wydaje się używać do tego celu 16-bitową liczbę całkowitą bez znaku. W dzisiejszych czasach większość kodowań i zestawów znaków ma * nazwy * zamiast * liczby *. Uważam, że kodowanie UTF-8 ma numer strony kodowej (który nigdzie nie jest określony ani używany poza Microsoftem), aby zapewnić, że nadal działa ze starym 16-bitowym systemem numerów stron kodowych. Mimo że UTF-8 w niczym nie przypomina strony kodowej. – Joey
@Johannes: Numer strony kodowej nadal jest ważną funkcją sposobu, w jaki system Windows obsługuje kodowanie znaków. Na przykład w .NET klasa Encoding może być instancowana tylko przy użyciu numeru strony kodowej. Nie sądzę, aby strona kodowa była jeszcze "starsza". – AnthonyWJones