PDA

View Full Version : دی کد کردن UTF-8



zoro21750
یک شنبه 16 اسفند 1383, 18:24 عصر
سلام.
آقا با یه مشکل اساسی برخوردیم (برخورد کردیم!)
من تو یه table اه mysql که از نوع CHAR (255) هست یه داده ی utf 8 ذخیره کردم.
موقع دیدنش اگه همینتوری تو بدنه echo کنم درست می نویسه ولی اگه مثلا با javaScript تو value یک input از نوع type بذارم یه چیزی مثل این بر می گردونه‌:

& # 1575;& # 1605;& # 1610;& # 1606; البته بدون فاصلهکه این در اصل یه متن فارسی یه! که front page کدش کرده.
حالا این چه ربطی به php داره؟؟
این که من اطلاعات رو از mysql با php میگیرم و حتی از utf8_code هم که استفاده کردم درست نشد!
بابا کمک کنید دیگه؟؟؟؟

esi022
سه شنبه 18 اسفند 1383, 10:03 صبح
آیا mysql نوع nchar داره؟

oxygenws
سه شنبه 18 اسفند 1383, 11:30 صبح
به نظر می رسه مشکل شما با PHP یا MySQL نباشه.

در ضمن، اگر بیشتر/بهتر توضیح بدی بهتره :)

zoro21750
دوشنبه 24 اسفند 1383, 06:31 صبح
سلام.
اون مشکل تقریبا حل شد (مشکل از جاوا اس. بود)
حالا یه مشکل جدید. مثلا همین نوشته بالا رو میخوایم تو MYSQL ذخیره کنیم. یه اتفاق وحشتناک میفته، همونطوری ذخیره میشه. یعنی دیگه نمیشه 255 حرف ذخیره کرد و تقریبا 30 حرف میشه.
:گیج:

oxygenws
دوشنبه 24 اسفند 1383, 12:05 عصر
توضیح تکمیلی لطفا.

zoro21750
دوشنبه 24 اسفند 1383, 16:58 عصر
سلام.
:confy2: بالاخره پس از 4-5 ساعت تلاش مشکل حل شد.
یه کد نوشتم برای اینکه کاراکترهای لازم فارسی utf8 رو تو کاراکترهای iso، یعنی از 0 تا 255 جا میده. (در واقع از 170 تا 244 که در این صورت انگلیسی هم وجود دارد) بنابراین single byte است که برای mysql کارها خیلی به درد میخوره. چون دیگه بیشتر از 30 حرف رو میتونن در varchar (255) ذخیره کنند و همچنین سرعت جستجو و like و غیره خیلی زیاد میشه.
تریپش اینطوریه که اول متنی که با یو تی اف کد شده (کاراکتراش ;xxxx # & اینجورین) رو به into_standard و بعد به my_utf_decoder میدین. الان کدشدست (iso) و برای فرستادن به mysql یا هر جای دیگه آماده است.
برای دی کد یا نمایش، باید از into_utf8 استفاده کنین.
امیدوارم به درد بخوره و باگ نداشته باشه! به درد ما که خیلی خورد.

oxygenws
دوشنبه 24 اسفند 1383, 21:43 عصر
لازمه بدونی که utf-8 برای فارسی فقط دو بایت طول داره نه 7 بایت!!!

zoro21750
سه شنبه 25 اسفند 1383, 09:44 صبح
ربطش به single byte چی بود؟ کی گفت 7 بایت؟

dena
سه شنبه 25 اسفند 1383, 13:22 عصر
من هم یک مشکل در این باره دارم
کلیه اطلاعات درون پایگاه داده من به صورت کدهای


& # 1575;& # 1605;& # 1610;& # 1606;


ذخیره شده است . البته خودم این طور می خواستم با صفحات asp هم هیچ مشکلی ندارم ولی الان دارم کدهایم را به .net تغییر می دهم . یک صفحه جستجو دارم وقتی کلمه ای را وارد می کنم جستجو نمی کند . مشکل من تغییر کد است . کلمه ای که
در تکس باکس می نویسم و می فرستم به کد های


& # 1575;& # 1605;& # 1610;& # 1606;


تبدیل نمی شود . کسی می تواند کمک کند تا من اطلاعات را با صفحه ای که کد صفحه آن به utf-8 ست شده به این کدهای ذکر شده تبدیل کنم

zoro21750
سه شنبه 25 اسفند 1383, 13:41 عصر
سلام.
از همان کدی که attach کرده ام استفاده کنید. مشکلتان کاملا حل خواهد شد.