[Кросспост][Шаманство]Чем отличается винда английская от винды русской
как КО отвечу - с дефолтной локалью
см выше, дефолтная локаль автоматом была заменена вместе со сменой региона на Россию, без её смены другое место глючило
2) Закинь скрины региональных параметров.
3) Какие именно крякозябры и в каком месте?
2. В региональных опциях всё идентично - стандартные настройки для россии
3. РљСЂРёРєРѕР·СЏР±СЂС‹
в месте, где строковые константы берутся не из юникодных .xml файлов, а из юникодных .class файлов
РљСЂРёРєРѕР·СЏР±СЂС‹А что тут непонятного?
это не так.
А что тут непонятного?нет, ну мне тоже всё понятно, но конечный пользователь предпочитает всё же правильно распознаную кодировку
это не так.ок, где она выставляется?
конечный пользователь предпочитает всё же правильно распознаную кодировкуФи, казуалы.
-Duser.language=ru -Duser.region=RU
2. В региональных опциях всё идентично - стандартные настройки для россииЗапости скрины, чтобы быть уверенным, что во всех местах стоят верные параметры (места, где можно выбрать, 3, но только 2 из них реально влияют на крякозябры).
в месте, где строковые константы берутся не из юникодных .xml файлов, а из юникодных .class файловГде именно пользователь видит крякозябры?
чо?
-Duser.language=ru -Duser.region=RUэто эквивалентно выставлению региона в винде (при отсутствии параметров)
не всегда.
не всегда.Когда не эквивалентно?
Запости скрины, чтобы быть уверенным, что во всех местах стоят верные параметры (места, где можно выбрать, 3, но только 2 из них реально влияют на крякозябры).Из каких мест скрины нужны? я знаю только 2 страницы в региональных опциях - первую и последнюю (регион и неюникодный язык)
Где именно пользователь видит крякозябры?На веб странице, которая создаётся GWT с кучей надстроек и берёт крикозябровые сообщения из .class файлов (ещё на этапе компиляции) (все остальные сообщения нормальные)
ну, например когда ява-машина запускается из ibm message broker.
эта сука берет ту локаль, которая была в момент установки и без явного указания параметра не меняет нивкакую.
записал в блокнотик, чего нехватает этому проекту до идеального
3. РљСЂРёРєРѕР·СЏР±СЂС‹Окстись, это не проблемы локали. Ты юникодную строку пытаешься вывести в ansi. Какая разница, какая локаль, если проблема в кодировке.
ты не совсем прав: да, это не проблема отображения CP1251 в CP1252, но некоторые гениальные решения могут выбрать юникод всегда кроме случая, что локаль английская и в этом случае шпарить в CP1252. Или наоборот - записывать будет всегда в юникоде (javac в нём скомпилит но от настроек решит читать как CP1252
ну, например когда ява-машина запускается из ibm message broker.эта сука берет ту локаль, которая была в момент установки и без явного указания параметра не меняет нивкакую.Скорее всего, она локаль где-то прописала в параметрах и использует их при запуске машины.
ты не совсем прав: да, это не проблема отображения CP1251 в CP1252, но некоторые гениальные решения могут выбрать юникод всегда кроме случая, что локаль английская и в этом случае шпарить в CP1252. Или наоборот - записывать будет всегда в юникоде (javac в нём скомпилит но от настроек решит читать как CP1252Кто будет писать такой маразматический код? Это же сложней и ненадежней.
PS JRE на машинах одинаковой версии? Если не ошибаюсь, версия 1.6 по-умолчанию всё считает юникодом, 1.5 - системной локалью.
берёт крикозябровые сообщения из .class файлов (ещё на этапе компиляции)Объясни, плз, подробнее. class-файлы появляются же после компиляции.
ошибаешься.
class a{
public static void main(String...args){
System.out.println(System.getProperty("file.encoding";
}
}
---------
void:~$ LANG=ru_RU.CP1251 java a
ANSI_X3.4-1968
void:~$ LANG=ru_RU.UTF-8 java a
UTF-8
void:~$ java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.1) (6b22-1.10.1-1)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
- window en
- linux
- java
?
profit
Объясни, плз, подробнее. class-файлы появляются же после компиляции.GWT - это фреймворк, который берёт откомпиленые class-файлы и перегоняет их в JavaScript, который будет работать в браузере у пользователя. А в этом проекте ещё парочка итераций вставлена
А некоторые гениальные программы (пример - tnsping, mysql и прочие, в т.ч. некоторые стандартные виндовые) выводят в консоль (активная кодировка 866) русский текст в кодировке 1251. Если перед запуском выполнить chcp 1251, то они они выводят в какой-то третьей кодировке. Вот почему приходится при возможности выбирать английский в настройках.
PS JRE на машинах одинаковой версии? Если не ошибаюсь, версия 1.6 по-умолчанию всё считает юникодом, 1.5 - системной локалью.Должно быть везде 1.6, но проверю ещё раз
Реально кинь пару скринов (проги) и не будет возникать таких глупых вопросов.
веб приложение на gwt. скрины кинуть не могу, тк оно на работе и рабочее
веб приложение на gwtСмотри что отдаёт сервер в качестве encoding в response (http заголовок).
Оставить комментарий
schipuchka1
История такова: есть проект на Java, который писало десятка 3 людей с руками различной кривости. Есть винда№1, русская, место жительства - Россия, дефолтный неюникодный - русский. Есть винда№2 - английская, место жительства - Россия (без этого глючит в другом месте дефолтный неюникодный - русский. На первой отбражается всё нормально, на второй - крикозябрами (юникод, если смотреть в цп1252) С чем это может быть связано?