Получение latin1 вместо UTF-8 с CGI :: Application - PullRequest
3 голосов
/ 26 апреля 2011

Я использую CGI::Application с данными UTF-8.

В HTML я установил кодировку UTF-8 примерно так

<!DOCTYPE html>
<html dir="ltr">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>

но выходные данные обрабатываются как латиница 1, так как специальные символы отображаются как 2 символа.

Информация о странице в Firefox говорит, что страница закодирована в ISO-8859-1 несмотря на заголовок HTML.

Мне удалось найти только эти два сообщения о проблеме, но они старые и очень сложные.

Кто-нибудь, кто решил эту проблему?

Обновление : Вот HTTP-заголовок от FireBug.

Response Headers
Date    Tue, 26 Apr 2011 09:53:24 GMT
Server  Apache/2.2.3 (CentOS)
Connection  close
Transfer-Encoding   chunked
Content-Type    text/html; charset=ISO-8859-1

Request Headers
Host    example.com
User-Agent  Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20100101 Firefox/4.0
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-gb,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive

Я заметил, что если я форсирую UTF-8 FireFox->Web Developer->Character Encoding->Unicode (UTF-8), если выглядит правильно.

1 Ответ

5 голосов
/ 26 апреля 2011

Ваши заголовки HTTP:

Content-Type text / html; кодировка = ISO-8859-1

… утверждают, что документ закодирован как латиница 1. Реальные заголовки HTTP имеют приоритет над данными HTML <meta>.

$webapp->header_add(-type => 'text/html; charset=UTF-8');

… следует выполнить работу, если я правильно читаю документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...