Забыли пароль?
Запросите новый здесь.

Автор темы: jikaka
ID темы: 1244
Информация:
Тема содержит 108 сообщения, была просмотрена 81170 раз.  Имеются прикрепленные файлы.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Локализация
 Распечатать тему
Locale UTF-8 для v7.02.06
grungestranger
Система чистая.
 
Web
BolkS
Надеюсь админы займутся и сделают все как надо. Движок переконвертированный в UTF-8 без BOOM, локаль в UTF-8 и аддоны соответственно!
Буду ждать, Удачи!
v7.02.06
 
Web
APTEMbI4
Интересно было бы посмотреть ab А если ставить ещё дополнительные плагины. Их тоже конвертить?
 
Web
Vova
Интересно было бы посмотреть А если ставить ещё дополнительные плагины. Их тоже конвертить?


Да.

Надеюсь админы займутся и сделают все как надо. Движок переконвертированный в UTF-8 без BOOM, локаль в UTF-8 и аддоны соответственно!
Буду ждать, Удачи!


Уже сделал?

grungestranger написал:

FAQ по utf8:
Замените папку /locale/Russian на локаль из этой темы.
В файле /locale/Russian/setup.php заменить:
Скачать исходники  Код
$locale['charset'] = "windows-1251";



на
Скачать исходники  Код
$locale['charset'] = "utf-8";



В файлах /setup.php и /maincore.php после:
Скачать исходники  Код
$db_connect = @mysql_connect($db_host, $db_user, $db_pass);
$db_select = @mysql_select_db($db_name);



добавить
Скачать исходники  Код
@mysql_query("SET NAMES 'utf8'");



Если база данных уже существует, то конвертировать ее в utf8:
Скачать исходники  Код
   $query = mysql_query("SHOW TABLES");
   if (mysql_num_rows($query) > 0) {
      while($row = mysql_fetch_array($query, MYSQL_NUM)) {
         mysql_query("ALTER TABLE ".$row[0]." CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;");
      }
   }



Иначе - создать новую базу данных с collation (сравнением) utf8_general_ci

У всех плагинов файлы локалей перекодировать в utf8, и проверить с каким сравнением создаются таблицы в базе данных.

При установке с нуля на хостинге - все отлично.
При установке с нуля на денвере - в последнем шаге установки выдает ошибку:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test.ru\www\locale\Russian\setup.php:1) in Z:\home\test.ru\www\setup.php on line 29
Но вроде бы все устанавливается нормально.

Кто знает, из-за чего эта ошибка на денвере - отпишитесь)


Конвертни в без БОМ.
Изменил(а) Vova, 03.03.2013 15:48
 
Web
BolkS
APTEMbI4, конвертации одной бывает недостаточно. Приходится код править с явным указанием UTF-8. Ну или переписывать плагин с нуля...
v7.02.06
 
Web
Vova
BolkS написал:

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


Зачем с нуля? Просто поправить нужние вещи.
 
Web
BolkS
Vova написал:

Зачем с нуля? Просто поправить нужние вещи.

Я пробовал уже править. Иногда доходит до безобразия - почти в каждой строчке явно указывать UTF-8. Проще переписать...
v7.02.06
 
Web
Vova
BolkS написал:

Vova написал:

Зачем с нуля? Просто поправить нужние вещи.

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


Я свой движок. Переделал в UTF-8 полностю. Но потом назад вернул. Так как много занимает эта кодировка.

4 байта символ. А в 1251 - 1 байт.

Этим скриптом базу конвертируеш.

Скачать исходники  Код
<?php

 $time = microtime(true);

 $db = '';
 $login = '';
 $passw = '';
 $host = '';

 $res = mysql_connect($host, $login, $passw);
 mysql_select_db($db);

 mysql_query('SET NAMES utf8;');

 $rs = mysql_query('SHOW TABLES;');
 print mysql_error(); //the notorious 'command out of synch' message :(
 while (($row=mysql_fetch_assoc($rs))!==false) {

 $time1 = microtime(true);
 //print $row['Tables_in_vspomni2']."\n";
 $table_name = $row['Tables_in_'.$db];
 $query = 'SHOW CREATE TABLE '.$table_name;

 $row_create = mysql_query($query);
 print mysql_error();
 $row1 = mysql_fetch_assoc($row_create);

 if (strpos($row1['Create Table'], 'DEFAULT CHARSET=utf8') !== false)
 {
 print 'Table '.$table_name.' — skipped'."\n";
 continue;
 }

 $create_table_scheme = str_ireplace('cp1251', 'utf8', $row1['Create Table']); // CREATE TABLE SCHEME
 $create_table_scheme = str_ireplace('ENGINE=InnoDB', 'MyISAM', $create_table_scheme);
 $create_table_scheme .= ' COLLATE utf8_bin';

 //print $create_table_scheme;
 //continue;

 $query = 'RENAME TABLE '.$table_name.' TO '.$table_name.'_tmp_export'; // RENAME TABLE;
 mysql_query($query);
 $error = mysql_error();
 if (strlen($error) > 0)
 {
 print $error.' — LINE '.__LINE__."\n";
 break;
 }

 $query = $create_table_scheme;
 mysql_query($query);
 $error = mysql_error();
 if (strlen($error) > 0)
 {
 print $error.' — LINE '.__LINE__."\n";
 break;
 }

 $query = 'ALTER TABLE '.$table_name.' DISABLE KEYS';
 mysql_query($query);
 $error = mysql_error();
 if (strlen($error) > 0)
 {
 print $error.' — LINE '.__LINE__."\n";
 break;
 }

 $query = 'INSERT INTO '.$table_name.' SELECT * FROM '.$table_name.'_tmp_export';
 mysql_query($query);
 $error = mysql_error();
 if (strlen($error) > 0)
 {
 print $error.' — LINE '.__LINE__."\n";
 break;
 }

 $query = 'DROP TABLE '.$table_name.'_tmp_export';
 mysql_query($query);
 $error = mysql_error();
 if (strlen($error) > 0)
 {
 print $error.' — LINE '.__LINE__."\n";
 break;
 }

 $time3 = microtime(true);
 $query = 'ALTER TABLE '.$table_name.' ENABLE KEYS';
 mysql_query($query);
 $error = mysql_error();
 if (strlen($error) > 0)
 {
 print $error.' — LINE '.__LINE__."\n";
 break;
 }

 print 'Enable keys to '.$table_name.'. time -'.(microtime(true) — $time3)."\n";
 print 'converted '.$table_name.'. time — '.(microtime(true) — $time1)."\n\n";

 }
 mysql_free_result($rs);

 print 'done. total time -'.(microtime(true) — $time);
 ?>




Делаеш кодировку соединия utf_general_ci.

Конвертируеш все файлы в UTF-8 БЕЗ БОМ.

Далее ищеш NotePad++.

Открываеш всё файлы. И делаеш массовую замену cp1251 и windows-1251 на utf-8.

Ставиш расширение mb_strings для PHP.

Далее ищеш функции strlen и substr. И заменяеш их на mb_strlen и mb_substr.

И всё.
 
Web
Polarfox
Для чего тебе 4х байтный уникод?
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
x1
 
grungestranger
mb_strings ставить обязательно?
 
Web
Vova
PolarFox написал:

Для чего тебе 4х байтный уникод?


А сколько занимает один символ в кодировке юникод?

grungestranger написал:

mb_strings ставить обязательно?


Да.
 
Web
grungestranger
А сколько занимает один символ в кодировке юникод?

Есть обычный юникод, в котором латинские символы занимают 1 байт, все остальные 2 байта, есть 16 битный юникод, в котором все символы по 2 байта

grungestranger написал:

mb_strings ставить обязательно?


Да.


Что-то всю жизнь нормально работал без mb_strings на utf8 и все работало.
 
Web
Vova
grungestranger написал:

А сколько занимает один символ в кодировке юникод?

Есть обычный юникод, в котором латинские символы занимают 1 байт, все остальные 2 байта, есть 16 битный юникод, в котором все символы по 2 байта

grungestranger написал:

mb_strings ставить обязательно?


Да.


Что-то всю жизнь нормально работал без mb_strings на utf8 и все работало.


00000000 — 0000007F 1 байт ASCII, в том числе латинский алфавит, простейшие знаки препинания и арабские цифры
00000080 — 000007FF 2 байта кириллица, расширенная латиница, арабский, армянский, греческий, еврейский и коптский алфавит; сирийское письмо, тана, нко; МФА; некоторые знаки препинания
00000800 — 0000FFFF 3 байта все другие современные формы письменности, в том числе грузинский алфавит, индийское, китайское, корейское и японское письмо; сложные знаки препинания; математические и другие специальные символы
00010000 — 001FFFFF 4 байта музыкальные символы, редкие китайские иероглифы, вымершие формы письменности
x1
 
Web
SchreiBear
Serge Renard написал:


При установке с нуля на денвере - в последнем шаге установки выдает ошибку:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test.ru\www\locale\Russian\setup.php:1) in Z:\home\test.ru\www\setup.php on line 29
Но вроде бы все устанавливается нормально.

Кто знает, из-за чего эта ошибка на денвере - отпишитесь)

Смысл ошибки понятен - не получается сделать переадресацию на index.php из-за того, что на страницу уже пошёл вывод и заголовки не могут быть отправлены. Однако IMHO ошибка эта возникает скорее всего не только на Денвере, но и у тебя на хостинге тоже - просто на хостинге, как правило, отключён вывод предупреждений PHP, и ты их просто не видишь :)





вот ответ относительно HEADER

в шапку setup.php


if(!headers_sent()){
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Content-type: text/html; charset=UTF-8");}




пройдёт без ошибки

http://www.php.ne...s-sent.php
Изменил(а) SchreiBear, 03.03.2013 19:41
Нужно сказать огромное спасибо людям, которые живут на популярных девелопер форумах и дают там адекватные ответы на абсолютно «нубские» вопросы без попыток унизить вопрошающего.
 
grungestranger
Кому не сложно, объясните по-подробнее - что делает и зачем нужен mb_strings в php fusion при кодировке utf8.
Изменил(а) grungestranger, 03.03.2013 20:20
 
Web
SchreiBear
всё я сделал! работает !!!

ушли квадраты с длинных слов . не проглатывает буквы .. UTF-8 без БУМ


setup.php

всё дело в длине строки заносимых Базу данных

VARCHAR(50) на VARCHAR(64)

смотреть ещё нужно к примеру длину строки к примеру в мини чате они должны быть адаптированны под UTF-8 ИХ длинна не совпадает с с латиницы. по этому!!! работайте автономно в режиме научного ТЫКА

всё остальное как было описано ранее

изменения в setup.php в шапку добавляем

Скачать исходники  Код
if(!headers_sent()){
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Content-type: text/html; charset=UTF-8");}





locale/Russian/global.php

строка 15 на
Скачать исходники  Код
 $locale['charset'] = "UTF-8";





locale/Russian/global.php

строка 6 на
Скачать исходники  Код
$locale['charset'] = "UTF-8";




в папке themes/templates/
в файлах header в админке и везде


перед
Скачать исходники  Код
echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>\n";



подбавлял строку
Скачать исходники  Код
echo '<?xml version="1.0" encoding="utf-8"?>';


чтобы на 100% было всё ПУЧЬКОМ!!!

полностью папку files с под папками и мамками;) и всё файлы *.php конвертировал в UTF-8 no BOM


ВСЁ!

поправите если что забыл... прогу прилепил - тестирую дальше
SchreiBear присоединено следующее:файл:
ansi2uni_1.zip [5.5кБ / 510 Загрузки]

Изменил(а) SchreiBear, 03.03.2013 22:27
Нужно сказать огромное спасибо людям, которые живут на популярных девелопер форумах и дают там адекватные ответы на абсолютно «нубские» вопросы без попыток унизить вопрошающего.
x1
 
Polarfox
Оффтопик
музыкальные символы, редкие китайские иероглифы, вымершие формы письменности
это меняет дело.
И много китайцев-суперстариков, говорящих о музыке вымершими формами письменности у тебя?

Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
x2
 
grungestranger
Vova, действительно без mb_ не обойтись.
edmonsur, не думаю, что в БД нужно что-то менять. Тестировал мини-чат (который стоит на этом сайте) - сначала длинный русский текст обрезался, вместо 200 символов было ~ 140, но после исправления некоторых ошибок (preg_replace без /u, strlen хотя должен быть mb_strlen [потом распишу все подробно]) все стало работать правильно без каких-либо изменений в БД.
Друзья, подскажите, обязательно ли конвертировать ВСЕ файлы в utf8, или достаточно только файлы локали? (У меня переконвертированы только файлы локали, и вроде все нормально работает)
 
Web
Polarfox
grungestranger, а потому что чатики писались под однобайтову кодировку.
И так будет со всеми плагинами, внезапно окажется что у них там свои заморочки под 1 байт заточенные, например.

Оффтопик Грядет восьмерка, покайтесь, забудьте про мутацию в уникод

Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Vova
grungestranger написал:

Vova, действительно без mb_ не обойтись.
edmonsur, не думаю, что в БД нужно что-то менять. Тестировал мини-чат (который стоит на этом сайте) - сначала длинный русский текст обрезался, вместо 200 символов было ~ 140, но после исправления некоторых ошибок (preg_replace без /u, strlen хотя должен быть mb_strlen [потом распишу все подробно]) все стало работать правильно без каких-либо изменений в БД.
Друзья, подскажите, обязательно ли конвертировать ВСЕ файлы в utf8, или достаточно только файлы локали? (У меня переконвертированы только файлы локали, и вроде все нормально работает)


Нужно все файлы в которих есть текст переконвертировать..
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
SharkBoss - партнёрская программа для монетизации ЛЮБЫХ видов трафика (включая спам).  →  Реклама на портале 0 / 540 28.03.2024 07:49
Proxy5 - Отличные IPv4 прокси для любых задач (Бесплатный тест)  →  Платные услуги 0 / 1488 31.10.2023 09:47
Где взять список районов по областям для разных стран?  →  Пожелания и предложения 0 / 1543 10.08.2023 12:44
От какой CMS лучше переделывать плагины сервисов оплаты, доставки, 1С для PHP-Fusion-7?  →  Пожелания и предложения 2 / 1598 08.08.2023 08:59
Посоветуйте плагины для назначения прав админов и групп пользователей  →  Пожелания и предложения 0 / 3158 06.06.2022 11:52
Бот для поиска чужих файлов на Dropmefiles.com  →  Реклама на портале 1 / 944 11.03.2022 05:28
Zinsta - Программа для раскрутки и продвижения instagram  →  Флуд 12 / 6972 15.01.2022 10:47
Версия для слабовидящих Button visually impaired  →  Javascript, ajax, jquery 1 / 1852 04.01.2022 10:44
ЧПУ Дополнительных страниц для PHP-Fusion 8  →  Разное 8 / 6146 26.10.2020 18:42
Для каждой доп страницы свой текст в шапке  →  Народное творчество 21 / 17171 14.10.2020 09:55
Топ 5 пользователей форума
Zaxap Zaxap (1,090)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)   SchreiBear SchreiBear (625)