Доброго времени суток.
Есть php+html скрипт (на самом деле их много), написанные в среде OS Windows XP в php expert editor, соотвественно кодировка windows-1251. При переносе этих скриптов на будущий сервер www, на котором стоит ubuntu 6.10, русские символы отображаются абракадаброй, что в примитивном gphpedit, что при при просмотре их через веб-браузер как локально, так и удаленно, браузер по умолчанию выставляет кодировку utf-8. Конечно, можно в начале каждой такой странички посылать
header(«Content-type: text/html; charset=windows-1251», true);
Но, во-первых это как-то мне кажется неправильно, а во-вторых, в среде linux если просматривать эти файлы, все равно русские символы отображаются абракадаброй.
Прошу вашей помощи в решении данного вопроса.
Спасибо.
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Сконвертируй их iconv в UTF-8.
Всё правильно.
Учи матчасть!
Сервер у тебя с этими скриптами что делает?
И с какого бодуна неправильным стало указание кодировки в заголовке?
Открою тебе страшную тайну: явление наблюдается не только для WWW и не только для случая текста в файлах. Но и для файловых серверов и имён файлов (кстати именно поэтому рекомендуется соблюдать осторожность с использованием кириллических имён файлов.
1. Еретик! Ну сколько можно говорить: единственно верной кодировкой является KOI8-R.
2. iconv не канает.
ЗЫ: Шуруп! Когда порядок перехода по TAB исправишь!?.
Нихера KOI8-R не правильная. Однобайтовые кодировки — бред и пережитки прошлого. Я не хочу трахаться каждый раз, когда мне хочется почитать в оригинале Хайяма или Басё! UTF-8 тоже не идеал потому что кривохак для совместимости с ASCII. UCS2(4) — наше всё.
С помощью iconv перегнал все скрипты из ср1251 в utf8 и теперь русские буквы отображаются корректно, что в ubuntu linux, что в браузере в ubuntu, что в браузере в Windows, заходя на www-server ubuntu удаленно.
Спасибо.
Но возникла другая проблема — кодировка в mysql. Некорректно отображаются кириллические символы при выборке из базы.
Есть база, созданная в Windows mysql4.19, кодировка cp1251. На ubuntu linux mysql 5.0.24a, default-character-set=latin1. Необходимо существующую базу перегнать в ubuntu.
Подскажите, пожалуйста, как грамотно избавиться от этой проблемы? И вообще, в какой кодировке правильнее хранить БД?
Спасибо
c:>mysqldump --default-character-set=utf8 -r db.sql database
transfer to unix, convert to utf-8
$ mysql --default-character-set=utf8 database < db.sql
in php-scripts: add «set names utf8»
Двухбайтный UTF тоже идёт лесом.
ANCII — плод мирового заговора.
Но инерция.
И с учётом расклада рулит именно KOI8-R (ну пока не будет организована разработка и повсеместный переход на 4-байтный UTF.
Это называется UCS4 ваще-то, когда все символы по 4 байта.
Сделал все так, как ты описал, и при выборке из базы тех кириллических записей, которые были сделаны ещё в среде Windows, кириллические строки стали отображаться корректно. НО если я хочу добавить в базу какую-нить запись, написанную по-русски, то она либо отображается при выборке вопросиками, либо выдает ошибку:
:(
Все, всем спасибо за помощь.
Проблема, описанная в последнем моем посте была исправлена добавлением необходимых строк в my.cnf.