Меню

Кодовая страница таблицы преобразования



Кракозябры вместо русских букв

Кракозябры — что за слово такое интересное? Этим словом обычно русские пользователи называют неправильное/неверное отображение (кодировку) символов в программах или самой Операционной Системы.
Почему такое случается? Однозначного ответа Вы не найдёте. Это может быть в следствии проделок наших «любимых» вирусов, может из-за сбоя работы ОС Windows (например пропало электричество и выключился компьютер), может программа создала конфликт с другой или ОС и всё «полетело». В общем причин может быть много, а самая интересная — это «Оно само вот так взяло и сломалось».
Читаем статью и узнаём как исправить проблему с кодировкой в программах и ОС Windows, раз уж она случилась.

Кто до сих пор не понял о чём я имею ввиду, вот вам несколько скриншотов:

Кракозябры вместо русских букв

Кракозябры вместо русских букв

Кракозябры вместо русских букв

За отображение кодировки (шрифта) в Windows отвечает несколько «вещей» — это язык, реестр и файлы самой ОС. Теперь будем их проверять по отдельности и по пунктам.

Как убрать и исправить кракозябры вместо русского (русских букв) в программе или Windows.

1. Проверяем установленный язык для программ, не поддерживающих Юникод. Может он у Вас сбился.

Итак, переходим по пути: Панель управления — Язык и региональные стандарты — вкладка Дополнительно
Там смотрим чтобы язык был Русский.

Кракозябры вместо русских букв

Кракозябры вместо русских букв

Перезагружаемся или перезапускаем проводник и смотрим не исчезла ли проблема. Нет? Тогда следующий пункт.

2. Может у Вас слетели системные настройки шрифтов? Тогда вот Вам один хороший файл, который содержит стандартные настройки шрифтов для Windows
standartnye_shrifty.zip 1,05 Kb cкачиваний: 32767
На всякий случай вот Вам архиваторы

Внутри настройки реестра для Windows XP, Vista, 7 и 8

Для тех, кто любознателен или не доверяет сайту или мне, показываю содержимое этих файлов.
Windows XP

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontMapper]
«ARIAL»=dword:000000cc
«DEFAULT»=dword:000000cc
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
«Arial,0″=»Arial,204»
«Arial,204″=»Arial,204»
«Arial Cyr,0″=»Arial,204»
«Arial CYR,204″=»Arial,204»
«Comic Sans MS,0″=»Comic Sans MS,204»
«Courier,0″=»Courier New,204»
«Courier,204″=»Courier New,204»
«Courier New Cyr,0″=»Courier New,204»
«Courier New CYR,204″=»Courier New,204»
«Fixedsys,0″=»Fixedsys,204»
«Helv,0″=»MS Sans Serif,204»
«MS Sans Serif,0″=»MS Sans Serif,204»
«MS Sans Serif,204″=»MS Sans Serif,204»
«MS Serif,0″=»MS Serif,204»
«MS Shell Dlg,0″=»MS Sans Serif,204»
«MS Shell Dlg,204″=»MS Sans Serif,204»
«Small Fonts,0″=»Small Fonts,204»
«System,0″=»Arial,204»
«Tahoma,0″=»Tahoma,204»
«Times New Roman,0″=»Times New Roman,204»
«Times New Roman,204″=»Times New Roman,204»
«Times New Roman Cyr,0″=»Times New Roman,204»
«Times New Roman CYR,204″=»Times New Roman,204»
«Tms Rmn,0″=»MS Serif,204»
«Verdana,0″=»Verdana,204»

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontMapper]
«ARIAL»=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
«Arial,0″=»Arial,204»
«Comic Sans MS,0″=»Comic Sans MS,204»
«Courier,0″=»Courier New,204»
«Courier,204″=»Courier New,204»
«MS Sans Serif,0″=»MS Sans Serif,204»
«Tahoma,0″=»Tahoma,204»
«Times New Roman,0″=»Times New Roman,204»
«Verdana,0″=»Verdana,204»

Вы сами можете скопировать этот текст в Блокнот, а затем Сохранить как файл с любым названием, но главное чтобы расширение было reg .

После запуска reg файла, Вы должны согласиться с предупреждением системы о внесении изменений в реестр.

Снова перезагружаемся или перезапускаем проводник. Если проблема не пропала, то переходим к следующему пункту.

3. Меняем в реестре кодировку на стандартную. Здесь всё то же самое что и в пункте 2.
Снова даю Вам файл для разных версий ОС Windows
standartnaya_kodirovka.zip 1,21 Kb cкачиваний: 20404
снова даю текст, содержащийся в этих файлах.
Для Windows XP

Windows Registry Editor Version 5.00

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
«1250»=»c_1251.nls»
«1251»=»c_1251.nls»
«1252»=»c_1251.nls»
«1253»=»c_1251.nls»
«1254»=»c_1251.nls»
«1255»=»c_1251.nls»

[HKEY_CURRENT_USER\Control Panel\International]
«Locale»=»00000419»
«LocaleName»=»ru-RU»
«s1159″=»»
«s2359″=»»
«sCountry»=»Russia»
«sCurrency»=»р.»
«sDate»=».»
«sDecimal»=»,»
«sGrouping»=»3;0»
«sLanguage»=»RUS»
«sList»=»;»
«sLongDate»=»d MMMM yyyy ‘г.'»
«sMonDecimalSep»=»,»
«sMonGrouping»=»3;0»
«sMonThousandSep»=» »
«sNativeDigits»=»0123456789»
«sNegativeSign»=»-»
«sPositiveSign»=»»
«sShortDate»=»dd.MM.yyyy»
«sThousand»=» »
«sTime»=»:»
«sTimeFormat»=»H:mm:ss»
«sShortTime»=»H:mm»
«sYearMonth»=»MMMM yyyy»
«iCalendarType»=»1»
«iCountry»=»7»
«iCurrDigits»=»2»
«iCurrency»=»1»
«iDate»=»1»
«iDigits»=»2»
«NumShape»=»1»
«iFirstDayOfWeek»=»0»
«iFirstWeekOfYear»=»0»
«iLZero»=»1»
«iMeasure»=»0»
«iNegCurr»=»5»
«iNegNumber»=»1»
«iPaperSize»=»9»
«iTime»=»1»
«iTimePrefix»=»0»
«iTLZero»=»0»

[HKEY_CURRENT_USER\Control Panel\International\Geo]
«Nation»=»203»

Эти действия Вы можете сделать и вручную, если хотите — пишите в комментариях и я напишу в какой ветке что находится и что менять нужно.

И снова нужно перезагрузиться или перезапустить проводник (перезайти в систему).

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

4. Меняем системные файлы. А если точнее, то мы не будем их менять, а лишь переименуем, чтобы до системы дошло наконец что мы хотим.

Первым делом идём по пути C:\Windows\System32 и листаем вниз в поисках следующих файлов:
C_1250.NLS
C_1252.NLS
C_1253.NLS
C_1254.NLS
C_1255.NLS
Нашли? Отлично. Теперь переименовываем их. Лучше будет просто добавить к названию что-то, например .bak .
Здесь есть небольшая загвоздка, заключающаяся в том, что это системные файлы Windows, и ОС не даст Вам вот так просто переименовать их. Для этого нужно находиться под учетной записью администратора.
Если уж совсем не получается, то кликаем правой кнопкой мыши по файлу и выбираем пункт Свойства. В окне свойств выбираем вкладку Безопасность и жмем кнопку Дополнительно.

Кракозябры вместо русских букв

Кракозябры вместо русских букв

Кракозябры вместо русских букв

Кракозябры вместо русских букв

Всё. Теперь можете переименовать файл. И так делается со всеми файлами.

4.1 Далее что нам нужно сделать, после того как переименовали файлы, это скопировать файл C_1251.NLS в какую-нибудь папку или место. Это самый нужный файл, который как раз и отвечает за русскую кодировку.

4.2 Теперь этот файл переименовываем как C_1252.NLS , копируем и вставляем в папку System32 .

4.3 В принципе можно на этом уже и закончить, но если начали, то давайте делать до конца. А это значит что нужно вновь переименовать тот файл, который скопировали в папку (первоначально он был C_1251.NLS , а сейчас C_1252.NLS ), на C_1250.NLS и потом его снова вставить в System32 .
Затем всё это повторяем для других файлов, переименовывая и вставляя C_1253.NLS , C_1254.NLS и C_1255.NLS в папку system32.

Не запутались? Может быть.

В итоге в папке C:\Windows\System32 у Вас должно быть так:

Кракозябры вместо русских букв

Надеюсь доступно объяснил. Если проще, то мы просто берем файл C_1251.NLS и переименовываем его в другие, перед этим те самые другие переименовав, чтобы не было конфликтов в названии.
Вот как то так.

5. Нашёл в интернете интересную программку, сам её не тестировал, но автор обещает что с её помощью можно исправить кракозябры.

Читайте также:  Нормативное развитие речи таблица

Кракозябры вместо русских букв

находится она по ЭТОЙ ссылке.

6. Последний пункт, в котором я даю Вам файл, который помог мне всё исправить когда-то и именно поэтому я его оставил на память. Вот архив:
krakozyabrooff.zip 1,85 Kb cкачиваний: 27373
Внутри два файла: кракозбрoff.cmd и кракозбрoff.reg

Принцип у них одинаковый — исправить всеми способами иероглифы, квадратики, вопросы или восклицательные знаки в програмах и ОС Windows (в простонародье кракозябры). Я пользовался первым и мне помогло.

Ну и напоследок пара советов:
1) Если работаете с реестром, то не забывайте делать бэкап (резервную копию) на тот случай, если что-то пойдёт не так.
2) Желательно после каждого пункта проверять 1ый пункт.

На этом всё. Теперь Вы знаете как исправить убрать/исправить Кракозябры (квадратики, иероглифы, восклицательные и вопросительные знаки) в программе или Windows.

Источник

Изменение кодировки в Microsoft Excel

Кодировка текста в Microsoft Excel

С потребностью менять кодировку текста часто сталкиваются пользователи, работающие браузерах, текстовых редакторах и процессорах. Тем не менее, и при работе в табличном процессоре Excel такая необходимость тоже может возникнуть, ведь эта программа обрабатывает не только цифры, но и текст. Давайте разберемся, как изменить кодировку в Экселе.

Работа с кодировкой текста

Кодировка текста – эта набор электронных цифровых выражений, которые преобразуются в понятные для пользователя символы. Существует много видов кодировки, у каждого из которых имеются свои правила и язык. Умение программы распознавать конкретный язык и переводить его на понятные для обычного человека знаки (буквы, цифры, другие символы) определяет, сможет ли приложение работать с конкретным текстом или нет. Среди популярных текстовых кодировок следует выделить такие:

  • Windows-1251;
  • KOI-8;
  • ASCII;
  • ANSI;
  • UKS-2;
  • UTF-8 (Юникод).

Последнее наименование является самым распространенным среди кодировок в мире, так как считается своего рода универсальным стандартом.

Чаще всего, программа сама распознаёт кодировку и автоматически переключается на неё, но в отдельных случаях пользователю нужно указать приложению её вид. Только тогда оно сможет корректно работать с кодированными символами.

Некорректные символы в Microsoft Excel

Наибольшее количество проблем с расшифровкой кодировки у программы Excel встречается при попытке открытия файлов CSV или экспорте файлов txt. Часто, вместо обычных букв при открытии этих файлов через Эксель, мы можем наблюдать непонятные символы, так называемые «кракозябры». В этих случаях пользователю нужно совершить определенные манипуляции для того, чтобы программа начала корректно отображать данные. Существует несколько способов решения данной проблемы.

Способ 1: изменение кодировки с помощью Notepad++

К сожалению, полноценного инструмента, который позволял бы быстро изменять кодировку в любом типе текстов у Эксель нет. Поэтому приходится в этих целях использовать многошаговые решения или прибегать к помощи сторонних приложений. Одним из самых надежных способов является использование текстового редактора Notepad++.

    Запускаем приложение Notepad++. Кликаем по пункту «Файл». Из открывшегося списка выбираем пункт «Открыть». Как альтернативный вариант, можно набрать на клавиатуре сочетание клавиш Ctrl+O.

Переход к отрытию файла в Notepad++

Запускается окно открытия файла. Переходим в директорию, где расположен документ, который некорректно отобразился в Экселе. Выделяем его и жмем на кнопку «Открыть» в нижней части окна.

Открытие файла в Notepad++

Изменение кодировки файла в Notepad++

После этого, чтобы сохранить изменения в файле жмем на кнопку на панели инструментов в виде дискеты. Закрываем Notepad++, нажав на кнопку в виде белого крестика в красном квадрате в верхнем правом углу окна.

Сохранение файла в Notepad++

  • Открываем файл стандартным способом через проводник или с помощью любого другого варианта в программе Excel. Как видим, все символы теперь отображаются корректно.
  • Корректное отображение символов в Microsoft Excel

    Несмотря на то, что данный способ основан на использовании стороннего программного обеспечения, он является одним из самых простых вариантов для перекодировки содержимого файлов под Эксель.

    Способ 2: применение Мастера текстов

    Кроме того, совершить преобразование можно и с помощью встроенных инструментов программы, а именно Мастера текстов. Как ни странно, использование данного инструмента несколько сложнее, чем применение сторонней программы, описанной в предыдущем методе.

      Запускаем программу Excel. Нужно активировать именно само приложение, а не открыть с его помощью документ. То есть, перед вами должен предстать чистый лист. Переходим во вкладку «Данные». Кликаем на кнопку на ленте «Из текста», размещенную в блоке инструментов «Получение внешних данных».

    Переход к добавлению текста в Microsoft Excel

  • Открывается окно импорта текстового файла. В нем поддерживается открытие следующих форматов:
    • TXT;
    • CSV;
    • PRN.

    Переходим в директорию размещения импортируемого файла, выделяем его и кликаем по кнопке «Импорт».

    Импорт файла в Microsoft Excel

    Открывается окно Мастера текстов. Как видим, в поле предварительного просмотра символы отображаются некорректно. В поле «Формат файла» раскрываем выпадающий список и меняем в нем кодировку на «Юникод (UTF-8)».

    Переход к выбору кодировки в Мастере текстов в Microsoft Excel

    Если данные отображаются все равно некорректно, то пытаемся экспериментировать с применением других кодировок, пока текст в поле для предпросмотра не станет читаемым. После того, как результат удовлетворит вас, жмите на кнопку «Далее».

    Мастер текстов в Microsoft Excel

    Открывается следующее окно Мастера текста. Тут можно изменить знак разделителя, но рекомендуется оставить настройки по умолчанию (знак табуляции). Жмем на кнопку «Далее».

    Второе окно мастера текста в Microsoft Excel

  • В последнем окне имеется возможность изменить формат данных столбца:
    • Общий;
    • Текстовый;
    • Дата;
    • Пропустить столбец.

    Тут настройки следует выставить, учитывая характер обрабатываемого контента. После этого жмем на кнопку «Готово».

    Третье окно мастера текста в Microsoft Excel

    В следующем окне указываем координаты левой верхней ячейки диапазона на листе, куда будут вставлены данные. Это можно сделать, вбив адрес вручную в соответствующее поле или просто выделив нужную ячейку на листе. После того, как координаты добавлены, в поле окна жмем кнопку «OK».

    Координаты вставки в Microsoft Excel

  • После этого текст отобразится на листе в нужной нам кодировке. Остается его отформатировать или восстановить структуру таблицы, если это были табличные данные, так как при переформатировании она разрушается.
  • Текст добавлен в файл в Microsoft Excel

    Способ 3: сохранение файла в определенной кодировке

    Бывает и обратная ситуация, когда файл нужно не открыть с корректным отображением данных, а сохранить в установленной кодировке. В Экселе можно выполнить и эту задачу.

      Переходим во вкладку «Файл». Кликаем по пункту «Сохранить как».

    Переход в сохранить как в Microsoft Excel

    Открывается окно сохранения документа. С помощью интерфейса Проводника определяем директорию, где файл будет храниться. Затем выставляем тип файла, если хотим сохранить книгу в формате отличном от стандартного формата Excel (xlsx). Потом кликаем по параметру «Сервис» и в открывшемся списке выбираем пункт «Параметры веб-документа».

    Переход в сервис в Microsoft Excel

    В открывшемся окне переходим во вкладку «Кодировка». В поле «Сохранить документ как» открываем выпадающий список и устанавливаем из перечня тот тип кодировки, который считаем нужным. После этого жмем на кнопку «OK».

    Параметры веб-документа в Microsoft Excel

    Читайте также:  Коэффициент сезонности продаж таблица
  • Возвращаемся в окно «Сохранения документа» и тут жмем на кнопку «Сохранить».
  • Сохранение файла в Microsoft Excel

    Документ сохранится на жестком диске или съемном носителе в той кодировке, которую вы определили сами. Но нужно учесть, что теперь всегда документы, сохраненные в Excel, будут сохраняться в данной кодировке. Для того, чтобы изменить это, придется опять заходить в окно «Параметры веб-документа» и менять настройки.

    Существует и другой путь к изменению настроек кодировки сохраненного текста.

      Находясь во вкладке «Файл», кликаем по пункту «Параметры».

    Переход в параметры в Microsoft Excel

    Открывается окно параметров Эксель. Выбираем подпункт «Дополнительно» из перечня расположенного в левой части окна. Центральную часть окна прокручиваем вниз до блока настроек «Общие». Тут кликаем по кнопке «Параметры веб-страницы».

    Переход в параметры документа в Microsoft Excel

    Открывается уже знакомое нам окно «Параметры веб-документа», где мы проделываем все те же действия, о которых говорили ранее.

    Параметры веб-документа в Microsoft Excel

    Теперь любой документ, сохраненный в Excel, будет иметь именно ту кодировку, которая была вами установлена.

    Как видим, у Эксель нет инструмента, который позволил бы быстро и удобно конвертировать текст из одной кодировки в другую. Мастер текста имеет слишком громоздкий функционал и обладает множеством не нужных для подобной процедуры возможностей. Используя его, вам придется проходить несколько шагов, которые непосредственно на данный процесс не влияют, а служат для других целей. Даже конвертация через сторонний текстовый редактор Notepad++ в этом случае выглядит несколько проще. Сохранение файлов в заданной кодировке в приложении Excel тоже усложнено тем фактом, что каждый раз при желании сменить данный параметр, вам придется изменять глобальные настройки программы.

    ЗакрытьМы рады, что смогли помочь Вам в решении проблемы.

    Помимо этой статьи, на сайте еще 12010 инструкций.
    Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

    Отблагодарите автора, поделитесь статьей в социальных сетях.

    ЗакрытьОпишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

    Источник

    Локали и кодировки

    Введение

    При разработке веб-приложений есть три важных момента, связанных с кодировками: информация в файлах-сценариях, информация в базе данных и браузер пользователя. Если выставить хотя бы одну кодировку неверно, то, в лучшем случае, данные отобразятся неверно, в худшем, безвозвратно потеряются. Чтобы этого не произошло, а приложение работало корректно при любых настройках сервера, нужно правильно выставить кодировки.

    Работа с локалями в PHP

    Работа с локалями в PHP выглядит одинаково и в UNIX, и в Windows, и в любой другой платформе. Для установки значений локали служит всего одна функция setlocale() . Чтобы выставить локаль, нужно передать функции первым аргументом категорию, на которую эта локаль распространяется, последующими список возможных локалей. Результатом будет название первой подходящей локали, которая и была установлена.

    Локали в Windows

    Для того, чтобы узнать, какие локали доступны в Windows, нужно зайти в панель управления, «Язык и региональные стандарты».

    На вкладке «Дополнительно», в разделе «Кодовые страницы таблиц преобразования» показан список всех возможных локалей для Windows, которые можно использовать в PHP.

    Кодовые страницы, которые отмечены в списке, из PHP могут быть использованы по их номеру.

    В общем случае, использование выглядит по следующей схеме: Язык_Регион.Номер_кодовой_страницы

    Для России это может выглядеть как Russian_Russia.1251 (cp1251) или Russian_Russia.20866 (KOI8-R).

    Для Украины — Ukrainian_Ukraine.1251 (cp1251).

    Вместо длинных названий можно использовать сокращённые russian , american , ukrainian и так далее. При этом кодовая страница выставится с учётом региональных настроек, для России и Украины — 1251, для Америки — 1252.

    Единственная кодировка, с которой у меня возникли проблемы, как ни странно, оказалась UTF-8. При попытке выставить эту кодировку, выставляются все категории локалей, кроме основной. Вывод локализованных сообщений при этом идёт в cp1251.

    Пока это можно списать на внутренний механизм PHP работы со строками. С шестой версии PHP вся обработка строк должна будет вестись в UTF-8, но до тех пор надо просто знать об этом и делать поправку.

    Ещё одной странностью при работе с локалями в PHP на Windows является неправильная работа с категориями локалей. Так, например, я выставляю локаль на функции времени KOI8-R, setlocale(LC_TIME, ‘Russian_Russia.20866’) , но почему-то выставляется cp1251 на все категории. Суть проблемы я так и не понял, возможно, это просто баг (проверялось на PHP 5.2.3), а возможно, что внутренний механизм Windows просто не позволяет этого делать. Хотя по мне, так это чистой воды баг.

    В общем-то, на этом можно и закончить разговор о локалях на Windows. Главное, запомнить, что локали, которые портированы из UNIX, под WIndows работают только для «галочки». Шаг влево, шаг вправо и результат будет непредсказуемым. Безопасно можно использовать только cp1251 (windows-1251) и KOI8-R, и только для LC_ALL .

    Локали в UNIX

    Выше я описал работу с локалями в Windows, теперь можно заострить внимание на UNIX-like системах. Для простоты, я буду их называть UNIX, а подразумевать FreeBSD :). В контексте данной статьи это не особо важно.

    Итак, дистрибутивы UNIX поставляются в одном виде для всех, и работа рассчитана на многопользовательский режим, поэтому о правильной настройке локали должен заботиться сам пользователь, например:

    Так может выглядеть работа системной команды locale , которая выводит текущие настройки локали для пользователя. А так, обычно, выглядят настройки локали для пользователя, под которым работает PHP:

    Функция ucwords() должна была сделать заглавными первые буквы всех слов. А перед этим strtolower() должна была предварительно все заглавные буквы сделать строчными. Но ничего не произошло. Так же не будет работать следующий код:

    Хотя \w является множеством знаков, из которых может состоять слово (алфавит, цифры и _), регулярное выражение не срабатывает. Причина как раз в том, что, работая с cp1251, мы не сказали об этом php. Чтобы исправить положение, достаточно воспользоваться функцией setlocale() и указать правильную локаль, например, так:

    Здесь первый аргумент — это категория, на которую будет распространяться локаль (константа LC_*), второй — название локали. Начиная с версии 4.3.0 можно указывать несколько имён локалей в виде массива или в качестве дополнительных аргументов. После вызова функция установит первую подходящую локаль и вернёт её имя:

    Читайте также:  Определение альтернативной стоимости товара таблица

    С помощью команды grep я отобрал локали, которые поддерживают русский язык. Любую из них можно использовать, однако следует понимать, что данные должны быть в кодировке, на которую рассчитана локаль. Если же это правило не будет соблюдено, то результат может оказаться весьма неожиданным:

    Если учесть, что koi8-r достаточно популярная кодировка для UNIX-севреров, а windows-1251 для русскоязычных сайтов, то подобное «необычное» поведение не такая уж и редкость. Когда-то я и сам столкнулся с этой проблемой при портировании проекта на реальный хостинг.

    После установки правильной локали все примеры, которые не работали выше, будут работать как нужно!

    По-русски заговорит и функция strftime(), которая корректно работает с локалями, а также и всё остальное, что зависит от локали.

    Кодировки в MySQL

    Напомню, что возможность задавать кодировки появилась только в MySQL 4.1.11 и выше.

    В отличие от php, проблемы с кодировками базы данных проявляют себя гораздо быстрее, чем проблемы с локалью. И связано это прежде всего с хранением и выборкой данных, поскольку от этого зависит информация на сайте. Я не буду подробно расписывать все тонкости, поскольку есть отдельная статья, остановлюсь на самых важных моментах.

    Первое, чему необходимо научиться, смотреть текущие настройки соединения с mysql:

    Критичными для пользователя являются character_set_client и character_set_results, которые отвечают за кодировку, в которой данные поступают в базу, и кодировку, в которой данные поступают из базы к пользователю. Если эти две кодировки отличаются от той, в которой работает клиент, в нашем случае php-скрипты, то неминуемо будут «странности», например, при сортировке выборки или внесении данных в базу.

    Второе, что необходимо знать, как правильно сообщить mysql о кодировках. Самый простой и правильный способ, это использовать запрос set names:

    После этого три переменные character_set_client, character_set_connection и character_set_results примут значение cp1251. Это будет означать — клиент работает в кодировке windows-1251 (cp1251).

    Помимо этого можно устанавливать непосредственно серверные переменные:

    Теперь данные поступают и извлекаются в разных кодировках.

    Список доступных кодировок можно просмотреть так:

    И третье, что необходимо знать, — правила создания таблиц для хранения данных в нужной кодировке. К слову, данные можно хранить в любой кодировке, а работать с ними в кодировке клиента. Однако, важно понимать, что кодировки носят национальный характер и должны соответствовать вносимым данным. Иначе будут потери. Для русского языка есть три национальных кодировки koi8r, cp866, cp1251, которые могут конвертироваться друг в друга без потерь. Также можно использовать интернациональную кодировку UTF8.

    Кодировку можно выставить на базу данных, таблицу и поле таблицы. Так, например, можно создать базу данных в кодировке koi8r:

    Следует отметить, что кодировка базы данных влияет только на дефолтные значения кодировок при создании таблиц. Это значит, что неважно в какой кодировке была создана база, если кодировка таблицы была задана явно. Это же правило относится и к полям таблицы.

    Следующим шагом я создам таблицу в cp1251 и одним полем в utf8:

    После того, как таблица создана с нужными параметрами кодировки, mysql автоматически начинает переводить данные при внесении и выборке.

    Данные хранятся в разном виде, но поступают к пользователю именно так, как надо!

    Подробнее с кодировками и проблемами их использования можно ознакомиться на http://dev.mysql.com/doc/refman/5.1/en/charset.html.

    Кодировка HTML-страниц

    Объявить кодировку html-страницы можно двумя способами: через заголовки и мета-тег в самой странице. Мета-тег используется только в статичных страницах.

    Я не буду его разбирать, это проблемы html. Во всех остальных случаях предпочтительней использовать HTTP-заголовок Content-Type.

    PHP позволяет работать с HTTP-заголовками посредством функции header():

    Но браузер отобразит страницу корректно только в том случае, когда php-файлы сами были созданы в кодировке cp1251. Также нужно понимать, что заголовки должны быть отправлены до любого вывода на экран.

    При необходимости перекодировать страницы «на лету», достаточно воспользоваться буферизацией и iconv:

    Надпись «Привет, мир!» будет выведена в юникоде, при этом браузер получит информацию о кодировке через заголовки и правильно отобразит страницу. Но важно понимать, что внутри скрипта и при соединении с базой данных надо использовать windows-1251 (cp1251), поскольку страница должна быть сформирована в одной кодировке.

    Важно помнить, что функции iconv доступны не всегда, и проверка на доступность этих функций не будет лишней.

    Заключение

    Для безопасной разработки русскоязычных веб-проектов необходимо включать в файл с общими настройками следующие команды:

    Как ни странно, но эти три строчки кода значительно повышают портируемость веб-проектов.

    © 2021 Антон Прибора. При копировании материалов с сайта, пожалуйста, указывайте ссылку на источник.

    Источник

    ASP — Установка кодовой страницы для преобразования строк

    Установка кодовой страницы для преобразования строк

    Кодовая страница представляет собой внутреннюю таблицу, которую операционная система использует для сопоставления символов (буквы, цифры и знаки пунктуации) с кодами символов. Разные кодовые страницы обеспечивают поддержку наборов символов, используемых в разных странах. Кодовые страницы указываются номером; например, кодовая страница 932 представляет японский набор символов, а кодовая страница 950 — один из китайских наборов символов.

    ASP и поддерживаемые обработчики сценариев используют внутри себе Юникод, 16-битный стандарт перекодировки символов фиксированной ширины. Если все страницы написаны в кодовой странице, используемой сервером по умолчанию, ASP автоматически преобразует строки. Если сценарий был создан не в кодовой странице, используемой сервером по умолчанию, необходимо указать кодовую страницу, чтобы строки при передаче преобразовывались правильно:

    • Между ASP и сценарием.
    • Между обозревателем и сценарием.
    • Между компонентами COM и сценарием.

    Чтобы указать кодовую страницу для ASP-страницы, используйте директиву @ CODEPAGE. Например, чтобы установить кодовую страницу японского языка, используйте следующую директиву:

    При обработке ASP содержимого и сценариев на этой странице указанная кодовая страница используется для преобразования из набора символов сценария в Юникод. Например, значение, указывающее на букву «a» в ANSI, будет преобразовано в другое значение, указывающее на букву «a» в Юникод.

    Источник

    Adblock
    detector