PDA

View Full Version : سوال: مشکل در تبدیل یونی کد latin_swidish به utf8_persian_ci



افشین66
پنج شنبه 06 اسفند 1394, 06:25 صبح
جدول های دیتابیس از اول روی latin1_swedish_ci تنظیم شده و کلی هم داده ثبت شده و حالا من می خوام حین انتقال دیتابیس وی بی رو utf8_persian_ci تنظیم کنم. یک سطر از بک آپ به صورت زیر که می خواد یک سطر برگردونه



INSERT INTO `messages` VALUES (2, 2, 169, 1118230181, 2, 0, '', 'name', 'xx@yahoo.com', '213.217.50.42', 1, 0, '', 'ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇیÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ˜äیÏ', 'xx', 1, 2, 1);


اطلاعات یونی کد چطور می تونم تغییر بدم.

Unique
پنج شنبه 06 اسفند 1394, 09:18 صبح
میتونی از iconv استفاده کنی :

$utf8_str = iconv("ISO-8859-1", "UTF-8",$str);

میتونی کل پایگاه را backup تیو یک فایل sql بگیری و توی لینوکس بزنی :

iconv -f LATIN1 -t UTF-8 < backup.sql

افشین66
پنج شنبه 06 اسفند 1394, 11:03 صبح
کد اجرا کردم ولی درست نشد

کد زیر ببینید


<?php
header('Content-Type: text/html; charset=utf-8');
$str= 'ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇیÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ˜äیÏ';
$utf8_str = iconv("ISO-8859-1", "UTF-8",$str);
echo $utf8_str;
?>

خروجی میشه

ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇیÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ˜äیÏ
که تو دیتابیس هم همینجوری ذخیره میشه

Unique
پنج شنبه 06 اسفند 1394, 17:46 عصر
راستش تا جایی که من میدونم latin1_swedish_ci همون ISO-8859-1 یا CP1252 هستش. شما باید دقیقا ببینی Encoding چیه و با iconv عوضش کنی.

افشین66
جمعه 07 اسفند 1394, 12:40 عصر
قطعه کد زیر نوشتم تا همه یونیکدها تست کنم باز به جواب نرسیدم



<?php
header('Content-Type: text/html; charset=utf-8');
$str= 'ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇیÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ˜äیÏ';
$tab = array("UTF-8", "ASCII", "Windows-1252", "ISO-8859-15", "ISO-8859-1", "ISO-8859-6", "CP1256");
$chain = "";
foreach ($tab as $i)
{
foreach ($tab as $j)
{
$chain .= " $i"."->"."$j=".@iconv($i, $j, "$str").'<br/>';
}
}

echo $chain;
?>



باز خروجی نتونستم بگیرم

خروجی کد این شد




UTF-8: ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇÛŒÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ËœäیÏ
UTF-8->UTF-8=ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇیÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ˜äیÏ
UTF-8->ASCII=
UTF-8->Windows-1252=
UTF-8->ISO-8859-15=
UTF-8->ISO-8859-1=
UTF-8->ISO-8859-6=
UTF-8->CP1256=
ASCII->UTF-8=
ASCII->ASCII=
ASCII->Windows-1252=
ASCII->ISO-8859-15=
ASCII->ISO-8859-1=
ASCII->ISO-8859-6=
ASCII->CP1256=
Windows-1252->UTF-8=
Windows-1252->ASCII=
Windows-1252->Windows-1252=
Windows-1252->ISO-8859-15=
Windows-1252->ISO-8859-1=
Windows-1252->ISO-8859-6=
Windows-1252->CP1256=
ISO-8859-15->UTF-8=ãØÇáÈ ãÑÈÊØ Èå Âãáی ÝÇیÑ ¡ ÕÊÊی ¡ ãÊÓیÞی ÑÇ ÏÑ ÇیÀ ÞÓãÊ ãÑÍ ˜ÀیÏ
ISO-8859-15->ASCII=
ISO-8859-15->Windows-1252=
ISO-8859-15->ISO-8859-15=ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇیÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ˜äیÏ
ISO-8859-15->ISO-8859-1=
ISO-8859-15->ISO-8859-6=
ISO-8859-15->CP1256=
ISO-8859-1->UTF-8=ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇیÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ˜äیÏ
ISO-8859-1->ASCII=
ISO-8859-1->Windows-1252=
ISO-8859-1->ISO-8859-15=
ISO-8859-1->ISO-8859-1=ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇیÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ˜äیÏ
ISO-8859-1->ISO-8859-6=
ISO-8859-1->CP1256=
ISO-8859-6->UTF-8=
ISO-8859-6->ASCII=
ISO-8859-6->Windows-1252=
ISO-8859-6->ISO-8859-15=
ISO-8859-6->ISO-8859-1=
ISO-8859-6->ISO-8859-6=
ISO-8859-6->CP1256=
CP1256->UTF-8=أ£أکأ‡أ،أˆ أ£أ‘أˆأ¦أک أˆأ¥ أ‚أ£آپأ،غŒ أ‌أ‡غŒأ‘ آ، أ•أ¦أٹغŒ آ، أ£أ¦أ“غŒأ‍غŒ أ‘أ‡ أڈأ‘ أ‡غŒأ¤ أ‍أ“أ£أٹ أ£أ‘أچ ثœأ¤غŒأڈ
CP1256->ASCII=
CP1256->Windows-1252=
CP1256->ISO-8859-15=
CP1256->ISO-8859-1=
CP1256->ISO-8859-6=
CP1256->CP1256=ãØÇáÈ ãÑÈæØ Èå Âãáی ÝÇیÑ ¡ ÕæÊی ¡ ãæÓیÞی ÑÇ ÏÑ Çیä ÞÓãÊ ãÑÍ ˜äیÏ


راه حلی به نظرتون نمیرسه ؟؟؟ :گریه::گریه: