Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 0 / 1
Регистрация: 05.12.2016
Сообщений: 89

Setlocale на новом сервере: не добавляются сообщения на русском

03.10.2018, 22:46. Показов 1158. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
После переноса сайта на новый сервер перестали отправляться в чат (voodoo chat) сообщения на русском. На английской раскладке всё в порядке, сообщения отправляются в общее окно чата.

Выполнили настройку локали на сервере:
# locale -a
C
C.UTF-8
en_US.utf8
POSIX
# less /usr/share/i18n/SUPPORTED | grep ru_RU | grep CP1251
ru_RU.CP1251 CP1251
# locale-gen ru_RU.CP1251
Generating locales (this might take a while)...
en_US.UTF-8... done
Generation complete.
# dpkg-reconfigure locales
Generating locales (this might take a while)...
en_US.UTF-8... done
ru_RU.CP1251... done
ru_RU.UTF-8... done
Generation complete.
# locale -a
C
C.UTF-8
en_US.utf8
POSIX
ru_RU.cp1251
ru_RU.utf8

В файл inc_common.php добавили строку

setlocale('LC_ALL', 'ru_RU.CP1251');

Так тоже пробовали:

setlocale('LC_ALL', 'ru_RU.cp1251');

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

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
<?php
if (!defined("_COMMON_")):
define("_COMMON_", 1);
 
if (!defined("_TAIL_"))
    ob_start();
//you can also try to use
//ob_start("ob_gzhandler);
//if you have a lot of visitors it can make chat faster,
//because it saves traffic and PHP sends pages faster (doesn't wait for a long output)
 
 
error_reporting(E_ERROR|E_PARSE|E_CORE_ERROR|E_CORE_WARNING|E_COMPILE_ERROR|E_COMPILE_WARNING);
$debug = 0;
 
setlocale('LC_ALL', 'ru_RU.CP1251'); 
 
function my_err_h ($errno, $errstr, $errfile, $errline) {
    global $debug, $data_path,$file_path;
    if (strpos($errstr, "\t") > 0) {
        list($voc_ercode, $errstr) = preg_split("\t", $errstr);
        $voc_ercode = intval($voc_ercode);
    } else 
        $voc_ercode = -1;
    switch($errno) {
        case E_NOTICE:
            if ($debug) echo "<b>NOTICE</b>: ".htmlspecialchars($errstr, NULL, '').",  at line ".$errline." in the file ".str_replace(dirname(dirname($errfile))."/", "", $errfile)."<br>";
            else return 0;
        case E_WARNING:
            if ($debug) echo "<b>WARNING</b>: ".htmlspecialchars($errstr, NULL, '').",  at line ".$errline." in the file ".str_replace(dirname(dirname($errfile))."/", "", $errfile)."<br>";
            else return 0;
        break;
        case E_USER_ERROR:
            echo "<center><table border=\"0\"width=\"80%\" cellpadding=\"6\" cellspacing=\"0\">";
            echo "<tr><td bgcolor=\"red\" ><span style=\"color:white; font-weight: bold; font-size:18px; font-family: Arial, Verdana\">Voodoo chat -- Fatal error</span></td></tr>";
 
            echo "<tr bgcolor=\"#dddddd\"><td><span style=\"color:black; font-size:14px; font-family: Arial, Verdana\">We got the error <br><b>".htmlspecialchars($errstr, NULL, '')."</b><br>at line <b>".$errline."</b>";
            echo " in the file <b>".str_replace(dirname(dirname($errfile)), "", $errfile);
            echo "</span></td></tr>";
            echo "<tr bgcolor=\"#dddddd\"><td><span style=\"color:black; font-size:12px; font-family: Arial, Verdana\">";
            if ($voc_ercode >0) echo "<a href=\"http://errors.vochat.com/?".$voc_ercode."\">More details about the problem</a><br><br><a href=\"http://vochat.com/\">Voodoo chat</a> &copy; 1999-2004 by Vlad Vostrykh";
            else echo "Find help at <a href=\"http://vochat.com/\">Voodoo chat homepage</a>";
            echo "</td></tr>";
            echo "</table></center>";
            exit;
        break;
        case E_USER_WARNING:
            echo "<center><table border=\"0\"width=\"80%\" cellpadding=\"6\" cellspacing=\"0\">";
            echo "<tr><td bgcolor=\"red\" ><span style=\"color:white; font-weight: bold; font-size:18px; font-family: Arial, Verdana\">Voodoo chat -- error</span></td></tr>";
 
            echo "<tr bgcolor=\"#dddddd\"><td><span style=\"color:black; font-size:14px; font-family: Arial, Verdana\">We got the error <br><b>".htmlspecialchars($errstr, NULL, '')."</b><br>at line <b>".$errline."</b>";
            echo " in the file <b>".str_replace(dirname(dirname($errfile)), "", $errfile);
            echo "</span></td></tr>";
            echo "<tr bgcolor=\"#dddddd\"><td><span style=\"color:black; font-size:12px; font-family: Arial, Verdana\">";
            if ($voc_ercode >0) echo "<a href=\"http://errors.vochat.com/?".$voc_ercode."\">More details about the problem</a><br><br><a href=\"http://vochat.com/\">Voodoo chat</a> &copy; 1999-2004 by Vlad Vostrykh";
            else echo "Find help at <a href=\"http://vochat.com/\">Voodoo chat homepage</a>";
            echo "</td></tr>";
            echo "</table></center>";
        break;
    }
    return 0;
}
set_error_handler("my_err_h");
 
if (!defined("_VOC_CONFIG_")) { 
function log_hack($log_string) { 
global $data_path; 
$f = fopen($data_path.'hacks.log', 'a+'); 
fwrite($f, $log_string); 
fclose($f); 
} 
 
// LOG hacker 
$conf = file($data_path."voc.conf"); 
foreach ($conf as $conf_rec) { 
$conf_rec = trim($conf_rec); 
if ($conf_rec && strpos($conf_rec, '$') === 0) { 
preg_match('/\$([\s\S]+)=/iU', $conf_rec, $varname); 
$varname = trim(preg_replace('/\[[\s\S]+\]/iU', '', $varname[1])); 
if (isset($$varname) || isset($_GET[$varname]) || isset($_POST[$varname]) || isset($_COOKIE[$varname])) { 
$log_string = "Attempt to assign value [".$$varname."] to variable [".$varname."]. IP: [".getenv('REMOTE_ADDR')."]; FIP: [".getenv('HTTP_X_FORWARDED_FOR')."]; USER_AGENT: [".getenv('HTTP_USER_AGENT')."]\n"; 
log_hack($log_string); 
trigger_error("Hacker detected: attempt to assign value [".$$varname."] to CONFIG-variable [".$varname."]. <br>Your IP [".getenv('REMOTE_ADDR')."] <br>and USER-AGENT [".getenv('HTTP_USER_AGENT')."]<br>are logged!", E_USER_ERROR); 
exit(); 
} 
unset($$varname); 
} 
} 
} 
 
#loading parameters from config file
 
if (!($conf_content = implode("",file($data_path."voc.conf")))) {
    echo $data_path;
    trigger_error("1000\tCannot open voc.conf file, please check your DATA PATH parameter",E_USER_ERROR);
}
eval($conf_content);
#time-offset
function my_time() {
    global $time_offset;
    return time()+$time_offset;
}
 
#for Register_gloabls = off
function set_variable($variable_name) { 
        global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $$variable_name, $_GET, $_POST, $_COOKIE; 
        $$variable_name = ""; 
        //GPC order :) 
        if (isset($HTTP_GET_VARS[$variable_name])) $$variable_name = $HTTP_GET_VARS[$variable_name]; 
   if (isset($_GET[$variable_name])) $$variable_name = $_GET[$variable_name]; 
        if (isset($HTTP_POST_VARS[$variable_name])) $$variable_name = $HTTP_POST_VARS[$variable_name]; 
        if (isset($_POST[$variable_name])) $$variable_name = $_POST[$variable_name]; 
        if (substr($variable_name,0,2)=="c_" && isset($HTTP_COOKIE_VARS[$variable_name])) $$variable_name = $HTTP_COOKIE_VARS[$variable_name]; 
   if (substr($variable_name,0,2)=="c_" && isset($_COOKIE[$variable_name])) $$variable_name = $_COOKIE[$variable_name]; 
        //i don't use string-arrays in forms, only in the admin-zone, but there it's just design &lang names 
        //which is normally doesn't have ' or " etc 
        if (is_string($$variable_name)) { 
                $$variable_name = str_replace("\0","", $$variable_name); 
                $$variable_name = str_replace("\t"," ", $$variable_name); 
                if (get_magic_quotes_gpc()) $$variable_name = stripslashes($$variable_name); 
        } 
}
set_variable("session");
$session = preg_replace("/[^a-fA-F0-9]/", "", $session);
set_variable("design");
 
set_variable("c_hash");
if ($c_hash == "")
    $c_hash = md5(uniqid(rand()));
//will set it in the file which doesn't output anything before inc_common.php
//setCookie("c_hash", $c_hash, time() + 2678400);
 
$browser_t = ""; 
if (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) $browser_t .= $HTTP_SERVER_VARS['HTTP_USER_AGENT']; 
if (isset($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'])) $browser_t .= $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']; 
if (isset($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'])) $browser_t .= $HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING']; 
if (isset($_SERVER['HTTP_USER_AGENT'])) $browser_t .= $_SERVER['HTTP_USER_AGENT']; 
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $browser_t .= $_SERVER['HTTP_ACCEPT_LANGUAGE']; 
if (isset($_SERVER['HTTP_ACCEPT_ENCODING'])) $browser_t .= $_SERVER['HTTP_ACCEPT_ENCODING'];
$browser_hash = 0;
for ($i=0;$i<strlen($browser_t);$i++) $browser_hash+=ord($browser_t[$i]);
 
#determening the current design
if ($design == "") $design = $default_design;
else if (!in_array($design, $designes)) $design = $default_design;
$current_design = $chat_url."designes/".$design."/";
 
 
#setting necessary variables
$daemon_url = $daemon_host;
if ($daemon_type!=2) $daemon_url = $daemon_url.":".$daemon_port."/";
$engine_path = $data_path."engine/".$engine."/";
$ld_engine_path = $data_path."engine/".$long_life_data_engine."/";
 
$user_data_file = $data_path."users.dat";
$who_in_chat_file = $data_path."who.dat";
$messages_file = $data_path."messages.dat";
$converts_file = $data_path."converts.dat";
$robotspeak_file = $data_path."robotspeak.dat";
$banlist_file = $data_path."banlist.dat";
$rooms_list_file = $data_path."rooms.dat";
 
#options
define('REITING_TIME_LIMIT', 3);
 
#user statuses
define('ONLINE',0);
define('DISCONNECTED',1);
define('AWAY',2);
define('NA',4);
define('DND',8);
define('SEE',16); 
define('MEET',32); 
define('ZANYAT',64); 
define('PRIVAT',128); 
define('EAT',256);
define('SMOK',512);
define('WORK',1024);
define('WANT',2048);
define('SLEEP',4096);
define('PLAY',8192);
define('MUSIK',16384);
define('MISS',32768);
define('LOVE',65536);
define('BAD',131072);
define('BATH',262144);
define('PIVO',524288);
define('KOFE',1048576);
define('STUD',2097152);
 
#admin rights
define('ADM_BAN',1);
define('ADM_IP_BAN',2);
define('ADM_VIEW_IP',4);
define('ADM_UN_BAN',8);
define('ADM_BAN_MODERATORS',16);
define('ADM_CHANGE_TOPIC',32);
define('ADM_CREATE_ROOMS',64);
define('ADM_EDIT_USERS',128);
define('ADM_BAN_BY_BROWSERHASH',256);
//define('ADM_BAN_BY_SUBNET',256);
define('ADM_LOG',1024); 
define('ADM_PRIVATE_LOG',4096); 
$total_admin_levels = 13;
define('ADM_MARRY',2048);
define("_VIP_", -84);
 
//constans for users and messages lists
define("USER_NICKNAME",0);
define("USER_SESSION",1);
define("USER_TIME",2);
define("USER_GENDER",3);
define("USER_AVATAR",4);
define("USER_REGID",5);
define("USER_TAILID",6);
define("USER_IP",7);
define("USER_STATUS",8);
define("USER_LASTSAYTIME",9);
define("USER_ROOM",10);
define("USER_IGNORLIST",11);
define("USER_CANONNICK",12);
define("USER_CHATTYPE",13);
define("USER_LANG",14);
//new
define("USER_HTMLNICK",15);
define("USER_PRIVTAILID",16);
define("USER_COOKIE",17);
define("USER_BROWSERHASH",18);
define("USER_CLASS",19);
//old again :)
define("USER_SKIN",20);
define("USER_TOTALFIELDS",21);
 
 
define("MESG_ID",0);
define("MESG_ROOM",1);
define("MESG_TIME",2);
define("MESG_FROM",3);
define("MESG_FROMWOTAGS",4);
define("MESG_FROMSESSION",5);
define("MESG_FROMID",6);
define("MESG_FROMAVATAR", 7);
define("MESG_TO",8);
define("MESG_TOSESSION",9);
define("MESG_TOID",10);
define("MESG_BODY",11);
define("MESG_TOTALFIELDS",12);
 
define("ROOM_ID",0);
define("ROOM_TITLE",1);
define("ROOM_TOPIC",2);
define("ROOM_DESIGN",3);
define("ROOM_BOT",4);
define("ROOM_CREATOR",5);//for private rooms
define("ROOM_ALLOWEDUSERS",6);//for private rooms
define("ROOM_ALLOWPICS",7);//to send pics.
define("ROOM_PREMODER",8);//message must be approved by moderator
define("ROOM_LASTACTION", 9);
define("ROOM_TOTALFIELDS",10);
 
 
#loading language pack
//require beacuse I need 'fatal error' if i cannot find the file
if(!defined("_VOC_CONFIG_")) {
    require_once($file_path."languages/".$language.".php");
 
    //System messages -- for case user selected not default language
    //?$w_whisper_to
    //the same name, but with 's' before
    $sw_rob_login = $w_rob_login;
    $sw_rob_hb = $w_rob_hb;
    $sw_rob_logout = $w_rob_logout;
    $sw_rob_idle = $w_rob_idle;
    $sw_goes_to_room = $w_goes_to_room;
    $sw_came_from_room = $w_came_from_room;
    $sw_set_topic_text = $w_set_topic_text;
    $sw_alert_text = $w_alert_text;
    $sw_kill_text = $w_kill_text;
    $sw_times = $w_times;
    $s_registered_colors = $registered_colors;
    $s_default_color = $default_color;
    $s_highlighted_color = $highlighted_color;
    $sw_just_married    = $w_just_married; 
$sw_no_married      = $w_no_married; 
$sw_just_married_adm= $w_just_married_adm; 
$sw_no_married_adm  = $w_no_married_adm;
}
//check for current language and call w_people_* from corresponding lang-file
function w_people($num) {
    global $language, $user_lang;
    $call_lang = $language;
    if (isset($user_lang) && $user_lang != "")
        $call_lang = $user_lang;
    return call_user_func("w_people_".$call_lang, $num);
}
endif;
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.10.2018, 22:46
Ответы с готовыми решениями:

Как в русском IE 5.0 читать сообщения об ошибках?
Как в русском IE 5.0 читать сообщения об ошибках, а то пишет всякую чушь. (Если нет выхода, то как переустановить русский IE на английский)

IncreditMail все сообщения, присланные на русском языке не читаются
Поставил себе IncreditMail (Это вместо Outlook Express. Теперь все сообщения, присланные на русском языке вообще никаким Encoding-ом не...

Как вывести на экран в виде одного сообщения сведения о новом автомобиле
Как вывести на экран в виде одного сообщения сведения о новом автомобиле, если его номер начинается с буквы А. Форма сообщения: ...

1
ytf
276 / 259 / 185
Регистрация: 15.08.2017
Сообщений: 1,483
11.10.2018, 12:24
проще в utf весь сайт переделать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2018, 12:24
Помогаю со студенческими работами здесь

DELL Power Edge 810/910. Как разобраться с дисками на новом сервере
Здравствуйте... Приобрели сервер DELL Power Edge 810/910. Уже 2-ой день мучаюсь. Дело в том что при 1-ом запуске увидел 8 физических...

indy 10 как слушать сообщения на сервере ?
нужно сделать такую прогу: запускается сервер и слушает входящие сообщения от клиентов.. запускается клиент и отправляет сообщения на...

Аутентификация на сервере из SPA приложения. Сообщения браузера
Всем привет. Пытаюсь залогиниться на бэкенде. Потестил API с помощью Postman. Скопировал из него же код Код пока тестовый, я пока в...

Чем отличается вызов функции setlocale(0, "") от setlocale(LC_ALL,"")?
Например printf(setlocale(0, &quot;&quot;)); cout &lt;&lt; endl; printf(setlocale(LC_ALL, &quot;&quot;)); выдают одинаковый результат (ну, на моей...

Как комбинировать setlocale(0,"") И setlocale(LC_ALL, "cp1251") ?
Мне в программе одновременно нужны символы и русский язык в консоли, и все что я знаю что если использовать только (0,&quot;&quot;) то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru