Проблема с кодировкой при записи в базу

12
Евгений Иванов
На сайте с 26.07.2006
Offline
272
1790

Значит в данный момент следующее

.HTACCESS


# Кодировка по умолчанию
AddDefaultCharset windows-1251

config.php


<?php
...
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
mysql_query("SET NAMES cp1251");
...
?>

Проблема собственно такая

Пишу в базу с помощью AJAX

if($_GET['go']=='cr-domen')

{
if ($_GET['domen']!='') {
@mysql_query("INSERT INTO Domen VALUES ('', '$domen', '$theme', '$link', '$sape', '', '', '', '', '')"); //Пишем сам домен
@mysql_query("INSERT INTO Mordi VALUES (0, '$domen','')");
@mysql_query("INSERT INTO Total VALUES (0, '$domen','')");
@mysql_query("INSERT INTO Pages VALUES (0, '$domen', 'index.html', '', '', '', '', '')"); //Пишем саму страницу
}
else {}
}

На выходе в самой базе получаю получаю такое чудо введите РІР°С? уникальный РЅРѕРјР...

Что сделать для исправления? :) как быть так сказать :)

Мало ли пригодиться, на компе установлено следующее ПО:

# Apache Web Server 2.2.8
# PHP Script Language 5.2.6
# MySQL Database 5.0.51b
# phpMyAdmin Database Manager 2.10.3
Wap.Click / Вап.Клик / Я - рядом!
kosenka
На сайте с 02.12.2007
Offline
122
#1

аякс использует utf-8.

тебе надо перевести весь сайт на utf-8 либо использовать функцию конвертирования из utf-8 в cp1251

...я тебе советую - переведи весь сайт на utf-8

Евгений Иванов
На сайте с 26.07.2006
Offline
272
#2

kosenka, мммм... Сорри, я не много не компетентен :) еи не трудно дайте хотя бы линк где мона почитать как что, или ели в двух слова напишите тут, если не трудно конечно же :)

kosenka
На сайте с 02.12.2007
Offline
122
#3

какую именно ссылку тебе дать?! используй яндекс/гоогл для поиска инфы.

...и если ты программер и не знаешь функций php для конвертирования - ты плохой программер.

[Удален]
#4

Для конвертирования кодировки можно использовать функцию iconv (если установлен модуль iconv в php)

string iconv ( string $in_charset , string $out_charset , string $str )


Performs a character set conversion on the string str from in_charset to out_charset.

<?php
echo iconv("ISO-8859-1", "UTF-8", "This is a test.");
?>
Евгений Иванов
На сайте с 26.07.2006
Offline
272
#5

Alexius, огромное спасибо

Пожалуйста, если кому-то не трудно подскажите - следующая конструкция нормальна, или есть более правильные варианты исполнения ( грубо говоря )

$domen = iconv("utf-8","windows-1251", $_GET["domen"]);

представил одну перенную, в деле их больше 20


$theme = $_GET["category"];
$link = $_GET["link"];
$sape = $_GET["sape"];
.....
.....
и так далее

Приемлемо ли применять тот способ перекодировки ( что выше ) ко все переменным если их 20 и больше?

kosenka:
какую именно ссылку тебе дать?!

На хорошее порево? даш? :D

kosenka
На сайте с 02.12.2007
Offline
122
#6
Приемлемо ли применять тот способ перекодировки ( что выше ) ко все переменным если их 20 и больше?

приемлемо, но будут тормоза. я ж говорил - ты плохой программер.

На хорошее порево? даш?

праааааативным геям ничего не жалко ;)

Евгений Иванов
На сайте с 26.07.2006
Offline
272
#7
kosenka:
я ж говорил - ты плохой программер.

мля, я не программер... но ща не об этом

kosenka:
приемлемо

приемлемо и в хреновой кодировки показывать ( по кол-во символов и их виду мон определить что за слво ) но я имею ввиду не как можно, а как стоит делать?

Если В УТФ все переводить то каракули будут в базе а на выводе русские символы? или как? я просто не представляю :)

Запрос по гууглу и яндекс не чего не дал, спрашивал:

Как выглядит УТФ запись в Мукуле

Как выглядит UTF в PhpMyAdmin

Вид UTF в MySQL

Если бы поисковик на все давал ответ - форумов бы не было ;)

PS Я не гей :D

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#8

Проблема возникла как я понял при переноси БД?

1. нужно дамп базы загнать в программу "Штирлиц" и перекодировать UTF8->WIN1251

2. загрузить полученный дамп в мускуль.

После этого директива mysql_query("SET NAMES cp1251"); будет работать.

А так получается данные в UTF8, а всё на WIN1251

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Pavka
На сайте с 20.05.2005
Offline
82
#9
kosenka:
аякс использует utf-8.

фигасе.. а мужики-то и не знают 😂

думаю, непосредственно в БД пишется кракозябрами или в phpMyAdmin нормально читается?

Возможно данные приходят уже в utf-8?

Без подписи
[Удален]
#10
думаю:


Приемлемо ли применять тот способ перекодировки ( что выше ) ко все переменным если их 20 и больше?
$theme = $_GET["category"];

$link = $_GET["link"];
$sape = $_GET["sape"];

Если так делать, то лучше пробежаться циклом по всему массиву $_GET и весь его перекодировать (работает в PHP 5)


foreach($_GET as &$value) {
$value = iconv("utf-8","windows-1251", $value)
}

А вообще зависит от логики приложения. Если полученные данные используются только в базе, то лучше задачу перекодирования переложить на СУБД (подробнее здесь):


character_set_client - кодировка в которой идет запрос от клиента к серверу
character_set_results - кодировка в которой отправляются ответы от сервера к клиенту

Или лучше сделать, чтобы везде была одна и та же кодировка.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий