نمايش فارسي از بانك sql server

it5

Member
سلام
من از odbc براي ارتباط php با sqlserver استفاده ميكنم
اطلاعاتم توي بانك فارسيه, يونيكد صفحه هم utf8 است.
ولي وقتي ميخوام با php توي بروزر نشون بدم به صورت علامت سواله
چي كار كنم؟؟؟؟؟
 

mosi20

Active Member
mysql_query("SET NAMES 'utf8'", $dbh);
mysql_query("SET CHARACTER SET 'utf8'", $dbh);
mysql_query("SET character_set_client = utf8 ",$dbh );
mysql_query("SET character_set_results = NULL ",$dbh) ;
mysql_query("SET character_set_connection = utf8 ",$dbh);
 

it5

Member
كمممممممممممممممك
يكي جواب بده
چرا از بانك من فارسي نشون نميده و به صورت علامت سواله؟
encoding صفحه هم utf8 است !!!!!
insert من در بانك توسط وب نيست ولي نمايشم از بانك با php است
كممممممممممممممك
 

it5

Member
نميتونم از mysql استفاده كنم, اين بانك وجود داره من ايجادش نكردم كه به دلخواه خودم از mysql استفاده كنم!
در php در مورد mysql دستوري هست كه unicode اطلاعات utf8 ميشه , يك query براي mysql است mysql_query("SET CHARACTER SET 'utf8
ولي براي sqlserver نيست,براي sqlserver بايد چي كار كنم ؟؟؟
 

zamanphp

Member
سلام دوست عزیز
منم قبلا این مشکل رو تو یکی از پروژه هام داشتم
اگه اطلاعات توی دیتابیست بصورت فارسی هست
شما می تونید یونیکد صفحات خود رو روی windows-1256 ست کنید
صددرصد درست می شود چون منم همین کارو کردم

اگه اطلاعات خود رو از طریق فرم توی دیتابیس بریزید(یونیکد صفحه حاوی فرم utf-8 باشد) وقتی به محتویات دیتابیس خود رو تماشا کنید می بینید
که بصورت عجق وجق نوشته شده که در این صورت برای نمایش اطلاعات فارسی خود باید یونیکد صفحه روی همان utf-8 ست شده باشد

یک روه دیگه هم که من از اون جواب گرفتم با استفاده از کتابخونه iconv هست که می تونید این کارو انجام بدید
اگه اطلاعاتتون توی دیتابیس بصورت فارسی هست و یونیکد صفحه ای که می خواین اطلاعات رو نشون بدید utf-8 هست جائی که مقتدیر رو بصورت فیلد از دیتابس می گیرید می تونید این کارو انجام بدید :
PHP:
<?php
//vary thinges
....

$rows = mysql_fetch_object($result);
$name = iconv("windows-1256","utf-8",$rows->fname);
echo $name
?>
الیته اگه تابع رو بصورت صحیح استفاده کردم
امیدوارم کامل توضیح داده باشم مشکلی بود بصورت بازمتن در خدمت شما هستم
موفق باشید زمان رضائی
 

it5

Member
PHP:
$rows = mysql_fetch_object($result);

اين كد مربوط به mysql ميشه,بانك من sqlservere
كارايي كه گفتين را انجام دادم ولي كمكم نكرد
اين كه از حرف N براي مشكل فارسي در sqlserver و php استفاده ميكنند چيه؟ آيا براي دستور select هم ميشه استفاده كرد؟ چه طور ؟
--------------------------------------------------------
اگر من insert اطلاعات را با وب (php) انجام بدم موقعي كه با وب هم از بانك ميخونم حروف را درست نشون ميده ولي يك اشكالي هست و اين كه با اين طريقه insert اطلاعات به صورت unicode ذخيره ميشه نه فارسي !!! البته اين موضوع را جهت يك نكته گفتم چون من اصلأ از طريق وب insert ندارم بلكه با وب فقط از بانك sqlserver مي خونم و اطلاعات هم همه به صورت دستي به بانك به صورت فارسي وارد شده
-----------------------------------------------------
كمك چرا درست نميشه؟؟؟؟
 

perfume117

New Member
امتحان كنيد

سلام مي تونيد به جاي mysql بنويسيد mssql من امتحان كردم درست شد.
$
rows = mssql_fetch_object($result);​
 

zamanphp

Member
می بخشید حواسم نبوده و تابع mysql رو نوشتم شما می تونید هم تراز اون با استفاده از توابع odbc بنویسید
حرف N در sqlserver وقتی استفاده میشه که شما نوع مثلا فیلد جدول رو nvarchar انتخاب کردید

دوست عزیز اگه اطلاعاتت رو می خوای دستی وارد کنی باید فایدهای جدولت که می خواین اطلاعات فارسی توشون ذخیره کنید رو nvarchar بگیرید
حالا وقتی اون فایلی که قراره اطلعات رو نشون بده رو فقط یونیکد اون رو windows-1256 کن بهت قول می دم درست نشون می ده
امیدوارم مشکلتون حل بشه
موفق باش ید
 

it5

Member
باز هم به صورت علامت سواله !!!!!
چي كار كنم؟؟؟؟؟؟؟؟؟؟؟؟
 

it5

Member
كمممممممممممممممممممممممممممممممممك
بابا كممممممممممممممممك
 

it5

Member
راجب اين موضوع زير كسي هست توضيح بيشتر بده ؟
راه حل ساده اش استفاده از header و footer هست.. یعنی قالبسازی! که داخل header کدهای مربوط به utf-8
meta رو اعمال میکنید تا هم خروجی صفحه با انکودینگ utf-8 باشه هم وردی اطلاعات و نوع ذخیرشون در دیتابیس utf-8 باشه.

header و footer هم چیزی نیست چون جز کد ساده html که برفرض می خواهید صفحه فارسی ایجاد کنید، فقط همونا رو با کدهای php جوری ترکیب کنید که وقتی صفحه خروجی میده این کدها در جای مناسب قرار بگیره.
خودتون می دونید دقیقا ... نیازی به توضیح نیست.
 

bono056

Member
آقا نتیجه این بحث چی شد؟ منم همین مشکل و دارم؟ علامت ؟؟؟ نشون میده.
 

amirali_it

New Member
اين مشكل حل ميشه
وقتي داري توي sqlserver ديتابيس ميسازي بايد توي انتخاب Collation name دقت كني
از اين طريق مشكلت حل ميشه
 
به نام خداوند هستی بخش::
دوست عزیز من از mysql استفاده میکنم میخواستم بدونم که اگه بخوام نوشتههای فارسی رو از دیتابیس بکشم بیارم بیرون و نمایش بدم حتما باید از اون صورتی که شما گفتین کیوری بگیرم؟
لطفا یه کم در موردشون هم توضیح بدید.

mysql_query("SET NAMES 'utf8'", $dbh);
mysql_query("SET CHARACTER SET 'utf8'", $dbh);
mysql_query("SET character_set_client = utf8 ",$dbh );
mysql_query("SET character_set_results = NULL ",$dbh) ;
mysql_query("SET character_set_connection = utf8 ",$dbh);
 
به نام خدا::

mysql_query("SET NAMES 'utf8'", $dbh);
mysql_query("SET CHARACTER SET 'utf8'", $dbh);
mysql_query("SET character_set_client = utf8 ",$dbh );
mysql_query("SET character_set_results = NULL ",$dbh) ;
mysql_query("SET character_set_connection = utf8 ",$dbh);

خوب من زمانیکه دارم اینسرت میکنم باید این کدها رو به کار ببرم یا زمانیکه دارم آپدیت مینم یا زمینیکه دارم سلکت میکنم؟

من یه جا دیدم وقتی داشت جدول خودش رو درست میکرد بعد از اینکه نوع جدول رو مشخص کرد یه سری دستورات نوشته بود که یادم نیست چی بود ولی توش در مورد utf8 یه چیزایی نوشته بودن.
خوب من الان یه بانک درست کردم که از کدهای بالا استفاده نمیکنه و وقتی که کیوری میگیرم از حرف "ی " به بعد رو نمایش نمیده.میشه من رو راهنمایی بکنید
 

جدیدترین ارسال ها

بالا