Какой набор символов использовать для хранения русского текста в файлах JavaScript в виде массива - PullRequest
1 голос
/ 09 сентября 2010

Я создаю страницу Coldfusion, которая берет данные языкового перевода, хранящиеся в таблице в моей базе данных, и создает статические js-файлы для каждой языковой пары английского языка с ___ и т. Д ...

Сейчас я начинаю работать над русским языком, я смог заставить другие языки работать нормально ..

Однако при сохранении файла весь текст выглядит как вопросительные знаки. Даже когда я запускаю свое приложение для перевода, текст только для этого языка выглядит как все ?????

Я пытался записать его через cffile как utf-8 или ISO-8859-1, но, похоже, ни один из них не отображает его должным образом.

Есть предложения?

Ответы [ 4 ]

1 голос
/ 10 сентября 2010

Безусловно, используйте UTF-8 поверх любого другого типа кодировки.Вам необходимо убедиться, что:

  • ваши шаблоны cfm были записаны на диск с кодировкой UTF-8 (Notepad ++ прекрасно справляется с этим, как и Eclipse или новый ColdFusion Builder)
  • ваша база данных была создана с правильной кодовой страницей для типов данных nvarchar (и varchar)
  • ваши подключения к базе данных обрабатывают UTF-8

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

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

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

Вторая категория проблем связана с символом, который не имеет эквивалента в конечном наборе символов, или водин из промежуточных наборов символов.В этом случае используется символ замещения.Это называется преобразованием с потерями и может происходить с любым клиентским API.Вы можете избежать преобразования с потерями, сконфигурировав базу данных для использования UTF-8 для набора символов базы данных.

Преимущество UTF-8 перед любой другой кодировкой заключается в том, что вы можете обрабатывать любое количество языков в одной базе данных / клиенте.

1 голос
/ 09 сентября 2010

Вы пробовали ISO-8859-5?Я считаю, что это кодировка, которая «должна» использоваться для русского языка.

0 голосов
/ 10 сентября 2010

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

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

  • ISO-8859-5. Однобайтовая кодировка с кириллицей в старших байтах, аналогичная кодовой странице Windows 1251. cp1251 будет кодировкой по умолчанию при сохранении в текстовом редакторе из русской установки Windows;

  • или UTF-8. Многобайтовая кодировка, которая содержит каждый символ. Все современные сайты должны использовать UTF-8.

(ISO-8859-1 является западноевропейским и не содержит кириллицы. Он аналогичен кодовой странице 1252, используемой по умолчанию при установке в Windows. Это бесполезно для вас.)

Итак, лучше всего сохранить как шаблон cf, так и файл js как UTF-8 и добавить <cfprocessingdirective pageencoding="utf-8">, если CF не подхватывает его автоматически.

Если вы не можете контролировать кодировку страницы, которая включает в себя скрипт (например, потому что это третье лицо), то вы не можете напрямую использовать любые символы, не относящиеся к ASCII. Вместо этого вам придется использовать строковые литералы JavaScript:

var translation_ru= {
    launchMyCalendar: '\u0417\u0430\u043f\u0443\u0441\u043a \u041c\u043e\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c'
};

при сохранении в файл это "· ÐßãáÚ ¼ÞÙ ÚÐÛÕÝÔÐàì", поэтому кодировка неверна

Похоже, вы сохранили как cp1251 (т.е. кодовую страницу по умолчанию на русском компьютере), а затем скопировали файл на западный сервер, где кодовая страница по умолчанию - cp1252.

Я также только что узнал, что мой текстовый редактор по выбору, textpad, не поддерживает Unicode.

Да, это была моя причина, по которой я тоже больше не использовал его. EmEditor (коммерческий) и Notepad ++ (с открытым исходным кодом) являются хорошей заменой.

0 голосов
/ 10 сентября 2010

Я вообще не могу воспроизвести эту проблему.Является ли шаблон ColdFusion, который делает вызов сам UTF-8?(с или без спецификации это не для русских).В любом случае UTF-8 - это то, что вы должны использовать.Убедитесь, что у вас есть UTF-8-совместимый редактор.Что большинство вещей на Mac.В Windows вы можете использовать Scite или GVim.

...