PDA

View Full Version : تبدیل ANSI به Unicode UTF8



Elnaz.Etedali
سه شنبه 06 بهمن 1388, 20:46 عصر
یک متغیر String که توش رشته ای ANSI ذخیره شده و توی این رشته کلمات فارسی است چون ANSI فارسی ها را به شکل عجیبی نشون میده ؟ کامپوننتی میخواهم که ANSI را به UTF8 تبدیل کند

vcldeveloper
سه شنبه 06 بهمن 1388, 22:46 عصر
چه نسخه ایی از دلفی؟ اگر توی رشته ANSI متن فارسی ذخیره شده، یعنی دارید از Code Page فارسی استفاده می کنید. برای اینکه متن فارسی به هم نریزه، یا باید همیشه روی اون سیستم Code Page فارسی نصب باشه، یا از یونیکد استفاده کنید. برای تبدیل به UTF-8 می تونید از تابع AnsiToUtf8 استفاده کنید.
برای ذخیره رشته های UTF-8 از نوع داده UTF8String استفاده کنید، البته در دلفی 2009 و 2010، نه نسخه های قدیمی تر که از یونیکد پشتیبانی نمی کنند.

m_kafman
شنبه 17 فروردین 1392, 21:58 عصر
آقای کشاورز سلام
راهنمائی میکنید که در دلفی 7 چه کنیم
من یک رشته فارسی را در یونیت خودم نوشتم و با استفاده از یک وب سرویس sms میزنم اما متن من به صورت (؟؟؟؟) میره

خواهشمندم راهنمائی کنید

BORHAN TEC
شنبه 17 فروردین 1392, 23:51 عصر
سلام

آقای کشاورز سلام
اگر ایشان را دیدید سلام ما را هم برسانید. :قلب::قلب::قلب:

من یک رشته فارسی را در یونیت خودم نوشتم و با استفاده از یک وب سرویس sms میزنم اما متن من به صورت (؟؟؟؟) میره
دلفی 7 به صورت ذاتی از یونیکد پشتیبانی نمی کنه و برای رفع این مشکل بهتره که از Delphi 2009 یا نسخه های جدید تر استفاده کنید.
اگر همچنان اصرار به استفاده از دلفی 7 دارید:اشتباه: شاید این تاپیک کمکتون کنه:
http://barnamenevis.org/showthread.php?355989
موفق باشید...

یوسف زالی
یک شنبه 18 فروردین 1392, 00:47 صبح
آقای کشاورز..!!!

این رو هم یک تستی کنید بلکم فرجی شد!
در قطعه کد مربوطه این رو اضافه کنید:


HTTPRIO1.HTTPWebNode.UseUTF8InHeader := true

در تکمیل صحبت دوستمون:
دلفی 7 ذاتا یونیکد نیست اما یونیکد نبودنش ارتباطی به یونیکد نفرستادن پارامتر ها به خارج از دلفی پیدا نمی کنه.
این کاملا به پیاده سازی خاص کامپوننت ها ربط داره. مثلا TNT هم روی همین 7 یونیکد رو پیاده می کنه.
شما می تونید با اسمبلی هم این کار رو کنید! اما همونطور که دوستمون گفتند اگر سختتون نیست کوچ کنید.
البته نه به خاطر مساله ی جاری!
من هم دارم یواش یواش متقاعد می شم که دلفی 7 عزیز و گرامی رو به قفسه بسپارم و برم سراغ XE های بزرگوار.

vcldeveloper
دوشنبه 19 فروردین 1392, 21:57 عصر
این کاملا به پیاده سازی خاص کامپوننت ها ربط داره. مثلا TNT هم روی همین 7 یونیکد رو پیاده می کنه.
TNT از WideString استفاده میکنه که اون هم از نوع رشته موجود در COM ویندوز استفاده میکنه. در واقع برای این کار از قابلیت ویندوز استفاده میکنه. سرعتش هم به همین علت پایینه.

وقتی گفته میشه یک نسخه از دلفی یونیکد هست یعنی اینکه نوع داده Native سازگار با یونیکد داره، به طور پیش فرض از اون استفاده میکنه، و خودش قابلیت های مختلف مورد نیاز برای کار با این نوع از داده رو براتون فراهم میکنه. وگرنه شما می تونید با همه داده های یونیکد و غیر یونیکد خودتون با هر کامپایلری به صورت باینری کار کنید، ولی اون وقت باید خودتون همه جزئیات یونیکد رو هندل کنید.

MohsenB
سه شنبه 20 فروردین 1392, 02:37 صبح
با سلام

از توابع UTF8Encode و UTF8Decode می توانید استفاده نمایید .


موفق باشید