|
|
|
| Здравствуйте. Как определить используемые операционной системой локаль и кодировку? На Linux эта информация содержится в переменной окружения LANG и имеет следующий вид: ru_RU.UTF8 - локаль.кодировка. Есть ли что-нибудь похожее в Windows? | |
|
|
|
|
|
|
|
для: Shecspi
(15.07.2009 в 12:14)
| | Определить в чем? | |
|
|
|
|
|
|
|
для: Shecspi
(15.07.2009 в 12:14)
| | Почти наверняка эти:
в `консоли` 866
в остальном 1251 | |
|
|
|
|
|
|
|
для: pini-pini
(15.07.2009 в 13:01)
| | Программа мультиязычная, а майкрософт в своё время для разных языков придумал разные кодировки, поэтому 1251 не подходит. Кодировка необходима та, что используется в системе для отображения интерфейса, или хотя бы нужно узнать локализацию Windows, а потом по ней определить кодировку. Если Vista и Seven нормально понимают UTF8, то в XP при создании папки с юникодным именем получаются "крякозябры". | |
|
|
|
|
|
|
|
для: Shecspi
(15.07.2009 в 15:46)
| | При создании файлов/папок и в Vista с семёркой получаются нечитаемые символы. Что я хочу: программа берёт из файла локализации название для новых файлов, конвертирует его в подходящую кодировку и создаёт файл. Но вот как определить кодировку? | |
|
|
|
|
|
|
|
для: Shecspi
(15.07.2009 в 16:47)
| | Windows русская, это 1251, что еще определять? | |
|
|
|
|
|
|
|
для: sim5
(15.07.2009 в 17:12)
| | >Windows русская, это 1251, что еще определять?
[капитан очевидность on]
не у всех
[капитан очевидность off] | |
|
|
|
|
|
|
|
для: Trianon
(15.07.2009 в 17:16)
| | Хотите сказать что ваша русская локализация Win на 1252 или еще круче? | |
|
|
|
|
|
|
|
для: sim5
(15.07.2009 в 17:37)
| | Хочу сказать, что не у всех Windows русская. | |
|
|
|
|
|
|
|
для: sim5
(15.07.2009 в 17:12)
| | > Windows русская, это 1251, что еще определять?
1251 применяется только для кириллицы, а ведь есть ещё греческие, турецкие, арабские и другие языки. По моему, всегу существует 9 кодировок для MS Windows - от 1250 до 1258. | |
|
|
|
|
|
|
|
для: Shecspi
(15.07.2009 в 18:42)
| | А на том, чем вы пишите свою программу, есть трудности с определением локализации? | |
|
|
|
|
|
|
|
для: sim5
(15.07.2009 в 18:57)
| | Программа на PHP. Исходя из этого, да, есть. | |
|
|
|
|
автор: ..... (15.07.2009 в 21:44) |
|
|
для: Shecspi
(15.07.2009 в 20:28)
| | у пхп такая локаль
<?php
print_r(setlocale(LC_ALL, 0));
?>
|
которая на XP никак не хочет устанавливаться в utf-8 | |
|
|
|
|
автор: '''''' (15.07.2009 в 22:57) |
|
|
для: .....
(15.07.2009 в 21:44)
| |
<?
print_r(setlocale(LC_ALL, ""));
|
| |
|
|
|
|
|
|
|
для: Shecspi
(15.07.2009 в 20:28)
| | Я немного офигевать начинаю.... То есть, вы пишите серверное приложение, а вам надо узнать локализацию клиента? Собственно браузера. | |
|
|
|
|
|
|
|
для: sim5
(16.07.2009 в 00:17)
| | Я до сих пор не понял, о двух машинах речь идет, или об одной. :) | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2009 в 00:29)
| | >автор: Shecspi (15.07.2009 в 20:28) письмо автору
>Программа на PHP. Исходя из этого, да, есть.
Не думаю, что он свое приложение с Апач (и еже с ним) распространяет на клиентов. ) | |
|
|
|
|
|
|
|
для: sim5
(16.07.2009 в 00:17)
| | > Я немного офигевать начинаю.... То есть, вы пишите серверное приложение, а вам надо узнать локализацию клиента? Собственно браузера.
Не браузера, а компьютера, на котором запускается программа. Браузер участия в процессе, как и веб-сервер не принимает. Т.е., грубо говоря, программа имеет следующий вид:
<?php mkdir('home/shecspi/Новая папка') ?>
|
Но т.к. этот скрипт сохранён в UTF-8, то и имя папки будет в UTF-8, а Windows такие имена не понимает. Как создать папку с нормальным именем? | |
|
|
|
|
|
|
|
для: Shecspi
(16.07.2009 в 08:06)
| | А как Вы определяете, что нужно писать Новая папка а не New folder или еще как-нибудь?
Просто если пишете на русском, то sim5 абсолютно прав. Кеодировкой русской windows является Windows-1251, в которой и надо оформить программу.
Если приложение мультиязычное - придется вытягивать данные из реестровых ветвей. Как вариант. | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2009 в 11:59)
| | А где находятся сведения о локали/кодировке в реестре? | |
|
|
|
|
|
|
|
для: Shecspi
(16.07.2009 в 12:52)
| | HKEY_CURRENT_USER\Control Panel\International\
HKEY_CLASSES_ROOT\MIME\Database\Codepage\1251
HKEY_CLASSES_ROOT\MIME\Database\Rfc1766
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage\ACP
для затравки... | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2009 в 13:21)
| | Вообще-то значание языка указывается как REG_DWORD и для русского равно 0х00000419 (1049). | |
|
|
|
|
|
|
|
для: sim5
(16.07.2009 в 16:47)
| | Ну да. В первом из перечисленных разделов. Ключ Locale. | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2009 в 16:50)
| | Языковые параметры нужно выбирать из той ветви реестра, в которой находятся Язык и региональные установки, это:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Control Panel\Desktop\\MultiUILanguageID
Параметр ограничивает выбор пользователей указанным языком, отключая меню и элементы управления в диалоговом окне "Язык и стандарты" панели управления. Если указанный язык не установлен на конечном компьютере, по умолчанию выбирается английский язык.
Тип: REGDWORD;
Значение: (по умолчанию параметра нет; 1049 = только русский; 1033 = только английский и т.д.)
Вообще автору скачать отсюда описание реестра, пусть читает. А что это за извращение такое - приложение на РНР? | |
|
|
|
|
|
|
|
для: sim5
(16.07.2009 в 17:00)
| | > А что это за извращение такое - приложение на РНР?
http://code.google.com/p/flight-files/ | |
|
|
|
|
|
|
|
для: Shecspi
(16.07.2009 в 17:31)
| | Я и говорю - извращение :) Ну что это за приложение, которое требует еще установки всякой всячины. Это не приложение, а программа по интересам.)
Все это можно реализовать без РНР, благо языков программироания хоть отбавляй. | |
|
|
|
|
|
|
|
для: sim5
(16.07.2009 в 17:36)
| | Несколько странное заявление. Для работы любой программы на интерпретируемом языке требуется как минимум интерпретатор. Это вполне нормально. Да и к тому же всякая всячина - это одна библиотека размером чуть больше мегабайта? | |
|
|
|
|
|
|
|
для: Shecspi
(16.07.2009 в 17:55)
| | >Для работы любой программы на интерпретируемом языке требуется как минимум интерпретатор.
Вот именно. Я о том же, и даже, если считать РНР вершиной возможного по отношению к Бейсику, то все равно писать на нем приложения для клиента не стал бы даже в пьяном угаре. Для этого есть Си, или даже Делфи, и то лучше. Я не хоучу (как пользователь) быть обязательно привязанным к неким условиям, и потому, выбирая программу "Файловый менеджер", выбрал бы иную, не требующую всякой хни для ее работы, и благо таковых полно ;-) | |
|
|
|
|
|
|
|
для: sim5
(16.07.2009 в 18:13)
| | А Вас кто заставляет пользоваться данной программой? Вы попросили - я показал.
Раз уж на то пошло, существует такая вещь, как репозиторий, и всё необходимое для работы той или иной программы тянется оттуда автоматически без участия пользователя. | |
|
|
|
|
|
|
|
для: Shecspi
(16.07.2009 в 18:17)
| | Ну я же не против, пишите. :) Я просто о том, что не рассматриваю РНР, как инструмен для локальных приложений, да он и не является таковым, и изначально предназначался для работы сервер-клиент, и заточен именно под эти задачи. А репозитарий и автоматизация, это обязательно РНР? | |
|
|
|
|
|
|
|
для: sim5
(16.07.2009 в 18:29)
| | > А репозитарий и автоматизация, это обязательно РНР?
Нет, но PHP в репозитории есть.
Просто узнал про существование библиотеки PHP-GTK, стало интересно, начал изучать, понял, что это вполне серьёзный инструментарий для разработки граф.интерфейса. Ну а теперь разрабатываю файл.менеджер. | |
|
|
|
|
|
|
|
для: Shecspi
(16.07.2009 в 18:36)
| | Ну коли хочется на нем, пишите, успехов.)
На одной школьной олимпиаде, было задание перевести на все языки фразу: "Если б я был султан, я б имел трех жен.". Среди вариантов на английском, немецком, французском, и т.д. языках, стретился вариант и на ПАСКАЛЕ. Выглядел так:
BEGIN
if (I=Sultan) then
begin
Get(First_Wife);
Get(Second_Wife);
Get(Third_Wife);
end;
END.
|
:) | |
|
|
|
|
автор: ,,,, (15.07.2009 в 13:11) |
|
|
для: Shecspi
(15.07.2009 в 12:14)
| |
//<? C
#include <windows.h>
int main ()
{
char c[5];
MessageBox(0, _itoa( GetACP(), c, 10 )
, "ANSI кодировка", MB_OK);
MessageBox(0, _itoa( GetOEMCP(), c, 10 )
, "OEM кодировка", MB_OK);
return 0;
}
|
| |
|
|
|
|
|
|
|
для: ,,,,
(15.07.2009 в 13:11)
| | > char c[5];
Тут Вы пожадничали.
Особенно если на консоли поставить кодировку utf8 | |
|
|
|