Проблема при использовании UTF-8

Иван 76

Новичок
Проблема при использовании UTF-8

Здравствуйте.
В данный момент у моего сайта кодировка Windows-1251.
Есть задумка открыть версии на Английском и Французском языках.
Какую лучше всего использовать кодировку?
Пробовал UTF-8. Появились проблемы с РНР. Во всех местах, где есть INCLUDE сервер посылал в браузер какой-то непонятный символ, видимый в HTML как некий пустой кубик. Этот кубик виделся в браузере как пустая строка, причем там, где ее не надо. Так же возникли проблемы с авторизацией и location, т.к. эти функции не могут работать, если в браузер уже послана хоть какая-нибудь информация. А этот злополучный символ уже был послан.
Так же некорректно начала работать функция htmlspecialchars($string, ENT_QUOTES); Я уже молчу о том, что количество символов в одной и той-же строке но в кодировке UTF-8 почти в два раза больше.
Эксперимент с UTF-8 я проводил на двух разных платных хостингах (хороших). Результат одинаковый.
В Windows-1251 проблем с Английским нет, а вот с Франзузским - большие. Западноевропейские кодировки не дружат с русскими символами.
Так же хотел спросить, что такое Юникод, и чем он отличается от UTF-8???
Делать Location перед Include не получится, т.к. вначале нужно подключить библиотеку функций, исходных данных и т.п., обработать события, и, в определенных случаях, перебрасывать страницу. Но несмотря на то, что до Location не было ни одного printа, в местах Include идет некий print в виде пустого кубика, искажающего разметку страницы. Хостер этого объяснить не смог. По всей видимости, это как-то связано с настройками сервера, а именно - с руссификацией.
Делать разные языковые версии в разных кодировках бессмысленно,- очень обширные программы (более 200 файлов). Нужна одна кодировка.
Если кто прольет свет, буду признателен. Не один спец уже развел предо мной руками, все бессильны. Это уже третий форум, на котором я задаю этот вопрос...
Если кто-то поможет, буду признателен.
 

svetasmirnova

маленький монстрик
>Во всех местах, где есть INCLUDE сервер посылал в браузер какой-то непонятный символ, видимый в HTML как некий пустой кубик.

Скорее всего, текстовый едактор добавляет сигнатуру. Не используй её и всё будет ОК
 

Demiurg

Guest
В utf8 все ascii символы имеют однобайтовое представление. Так что размер скриптов может увеличится только за счет не ascii символов.
 

SiMM

Новичок
> Я уже молчу о том, что количество символов в одной и той-же строке но в кодировке UTF-8 почти в два раза больше
http://ru.wikipedia.org/wiki/Unicode
Там же читай про BOM, который добавляет твой редакотор.

> В Windows-1251 проблем с Английским нет, а вот с Франзузским - большие.
http://ru.wikipedia.org/wiki/CP1251 - откуда там взяться французским символам?

> Западноевропейские кодировки не дружат с русскими символами.
И не должны. В 128 символов сложно уместить все символы для всех языков мира, именно поэтому и был придуман Unicode
 

Иван 76

Новичок
>> Я уже молчу о том, что количество символов в одной и той-же строке но в кодировке UTF-8 почти в два раза больше
http://ru.wikipedia.org/wiki/Unicode
>Там же читай про BOM, который добавляет твой редакотор.

Про BOM понял. По всей видимости, это именно он портит всю картину. Но как его избавиться?? Он выскакивает сам по себе, без всяких принтов.

Я рассмотрел эти кубики в другой кодировке. В ANSI это выглядит как п»ї
 

Demiurg

Guest
>Но как его избавиться??
выключить в редакторе их подстановку.
 

Иван 76

Новичок
в каком редакторе? речь идет о настройках сервера? или нужно модифицировать инклуд-файлы?
 

Demiurg

Guest
текстовый редактор, которым ты редактируешь скрипт.
 

Иван 76

Новичок
Я использую обыкновенный блокнот. В упор не могу найти чем выключить подставку...
 

Demiurg

Guest
Используй необыкновенный блокнот, если в нем BOM не отключается.
 

svetasmirnova

маленький монстрик
Иван 76
не используй обыкновенный блокнот.
Используй jEdit (http://jedit.org) или Notepad2 (http://www.flos-freeware.ch) или любой другой нормальный редактор
 

Иван 76

Новичок
Большое спасибо всем!!!
Здесь я встретил истинных профессионалов.

-~{}~ 26.08.05 16:44:

У меня еще такой вопрос:
- чем вызвана некорректность работы в utf-8 функции htmlspecialchars($string, ENT_QUOTES);???
- и нужно ли увеличивать длину полей varchar в БД в связи с увеличением длины каждого символа в utf-8, или БД сама разберется???
 

svetasmirnova

маленький монстрик
>чем вызвана некорректность работы в utf-8 функции htmlspecialchars($string, ENT_QUOTES);???
кодировку ещё одним параметром надо указывать

-~{}~ 26.08.05 16:51:

>и нужно ли увеличивать длину полей varchar в БД в связи с увеличением длины каждого символа в utf-8, или БД сама разберется???
Если кодировка при создании базы указана utf-8, должна сама по идее. Но ручаться не могу: попробуй.
 

Demiurg

Guest
>чем вызвана некорректность работы в utf-8 функции htmlspecialchars($string, ENT_QUOTES);???
в чем именно не корректность ? htmlspecialchars работает только с ascii символами
 

Demiurg

Guest
svetasmirnova
если внимательно посмотреть на кодировку UTF8 то можно увилить, все символы, с которыми имеет дело htmlspecialchars - однобайтные, так что htmlspecialchars с utf8 является "multibyte safe"
 

Иван 76

Новичок
Не могу объяснить проблему, т.к. сейчас все работает нормально.
А проблема выглядела примерно так:
вводим, например ООО "Фирма" ....
а поле обработки видим что-то типа ООО 'Фирма" ...

-~{}~ 26.08.05 17:27:

Форум не произвел замены & на & поэтому я не смог объяснить.
После обработки видим что-то типа ООО 'Фирма"
 

Demiurg

Guest
Иван 76
значит ты два раза делал делал htmlspecialchars или делал его там, где его делать не надо
 

Иван 76

Новичок
Программу я не менял, только кодировку. Значит. Двойная обработка то-же исключается. Да неважно теперь все это, главное - что все работает.

Всем огромное спасибо.
 
Сверху