Конвертиране на DB

big_boy

Registered
Здравейте колеги.
Един приятел има форум със колация на таблицата cp1251_general_ci и кодировка на сайта UTF-8 (предполагам знаете какъв е резултата в DB-то).
Опитах се да я конвертирам във utf8_unicode_ci, но имам проблеми със някой букви
Код:
бе�?е, �?згорял
Имате ли идея как мога да го оправя ?
 
Смени го на utf8_general_ci не на unicode.

ПП. винаги като правиш нещо по бд си прави бекъп, сега ако вече си объркал енкодинга, и да го сменяш и да не го сменяш вече ще е с объркани символи. Ще трябва след като смениш енкодинга, да вкараш данните наново.
 
Radko каза:
Смени го на utf8_general_ci не на unicode.

ПП. винаги като правиш нещо по бд си прави бекъп, сега ако вече си объркал енкодинга, и да го сменяш и да не го сменяш вече ще е с объркани символи. Ще трябва след като смениш енкодинга, да вкараш данните наново.
Колега backup си правя винаги и точно на utf8_general_ci съм го сменил там е проблема, че при конвертирането ми излязоха тези синволи...
 
Как сменяш колацията? нали знаеш че трябва не само колацията, но и character set-a да смениш, защото когато смениш колацията mysql се опитва да map-не съдържанието на колоните, и ако не са с правилния енкодиг може да има загуба на данни или в случая други символи.

Прави се така пример само

Код:
CREATE TABLE t1
(
    col1 VARCHAR(5)
      CHARACTER SET latin1
      COLLATE latin1_german1_ci
);

ALTER TABLE t1 MODIFY
    col1 VARCHAR(5)
      CHARACTER SET latin1
      COLLATE latin1_swedish_ci;

В случая това е само пример, сменяш си с твоите параметри.

Ето още информация тук

http://dev.mysql.com/doc/refman/5.1/en/charset-column.html
 
Първо пробвах със оригиналния конвертор на IPB предоставен във сайта им
След това се опитах ръчно, но и в двата варианта ми се появяват тези символи

Оригинална база данни:
http://store.picbg.net/pubpic/6E/47/4d50d830cf806e47.png

След конвертиранието със и без скрипта на IPB:
http://store.picbg.net/pubpic/21/74/6e80ff08e0392174.png


Пробвах да изведа текста и във обикновен php файл със заявка до ДБ, но и при него се появяват символите вместо букви...

Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<?php
mysql_connect("localhost","user","pass");
mysql_select_db("db");
mysql_query("SET NAMES cp1251");
$query = mysql_query("SELECT * FROM `tablica` ORDER BY id DESC LIMIT 1") or die('Error, query failed');
while($r=mysql_fetch_array($query)){
$text = htmlspecialchars($r[10]);
echo $text;
}
?>
</body>
</html>
 
big_boy каза:
Пробвах да изведа текста и във обикновен php файл със заявка до ДБ, но и при него се появяват символите вместо букви...

Това е така защото трябва да смениш кодировката на файла на utf8 without BOM. Notepad++ има такива настройки.
 
ако неможеш да се справиш с mysql щи дам по лесна идея изведи си го със php като обикновен текст и със няколко заявки го презапиши във новата таблица с новата колация би трябвало да стане
 

Back
Горе