یک متغیر String که توش رشته ای ANSI ذخیره شده و توی این رشته کلمات فارسی است چون ANSI فارسی ها را به شکل عجیبی نشون میده ؟ کامپوننتی میخواهم که ANSI را به UTF8 تبدیل کند
Printable View
یک متغیر String که توش رشته ای ANSI ذخیره شده و توی این رشته کلمات فارسی است چون ANSI فارسی ها را به شکل عجیبی نشون میده ؟ کامپوننتی میخواهم که ANSI را به UTF8 تبدیل کند
چه نسخه ایی از دلفی؟ اگر توی رشته ANSI متن فارسی ذخیره شده، یعنی دارید از Code Page فارسی استفاده می کنید. برای اینکه متن فارسی به هم نریزه، یا باید همیشه روی اون سیستم Code Page فارسی نصب باشه، یا از یونیکد استفاده کنید. برای تبدیل به UTF-8 می تونید از تابع AnsiToUtf8 استفاده کنید.
برای ذخیره رشته های UTF-8 از نوع داده UTF8String استفاده کنید، البته در دلفی 2009 و 2010، نه نسخه های قدیمی تر که از یونیکد پشتیبانی نمی کنند.
آقای کشاورز سلام
راهنمائی میکنید که در دلفی 7 چه کنیم
من یک رشته فارسی را در یونیت خودم نوشتم و با استفاده از یک وب سرویس sms میزنم اما متن من به صورت (؟؟؟؟) میره
خواهشمندم راهنمائی کنید
سلام
اگر ایشان را دیدید سلام ما را هم برسانید. :قلب::قلب::قلب:نقل قول:
آقای کشاورز سلام
دلفی 7 به صورت ذاتی از یونیکد پشتیبانی نمی کنه و برای رفع این مشکل بهتره که از Delphi 2009 یا نسخه های جدید تر استفاده کنید.نقل قول:
من یک رشته فارسی را در یونیت خودم نوشتم و با استفاده از یک وب سرویس sms میزنم اما متن من به صورت (؟؟؟؟) میره
اگر همچنان اصرار به استفاده از دلفی 7 دارید:اشتباه: شاید این تاپیک کمکتون کنه:
https://barnamenevis.org/showthread.php?355989
موفق باشید...
آقای کشاورز..!!!
این رو هم یک تستی کنید بلکم فرجی شد!
در قطعه کد مربوطه این رو اضافه کنید:
HTTPRIO1.HTTPWebNode.UseUTF8InHeader := true
در تکمیل صحبت دوستمون:
دلفی 7 ذاتا یونیکد نیست اما یونیکد نبودنش ارتباطی به یونیکد نفرستادن پارامتر ها به خارج از دلفی پیدا نمی کنه.
این کاملا به پیاده سازی خاص کامپوننت ها ربط داره. مثلا TNT هم روی همین 7 یونیکد رو پیاده می کنه.
شما می تونید با اسمبلی هم این کار رو کنید! اما همونطور که دوستمون گفتند اگر سختتون نیست کوچ کنید.
البته نه به خاطر مساله ی جاری!
من هم دارم یواش یواش متقاعد می شم که دلفی 7 عزیز و گرامی رو به قفسه بسپارم و برم سراغ XE های بزرگوار.
TNT از WideString استفاده میکنه که اون هم از نوع رشته موجود در COM ویندوز استفاده میکنه. در واقع برای این کار از قابلیت ویندوز استفاده میکنه. سرعتش هم به همین علت پایینه.نقل قول:
این کاملا به پیاده سازی خاص کامپوننت ها ربط داره. مثلا TNT هم روی همین 7 یونیکد رو پیاده می کنه.
وقتی گفته میشه یک نسخه از دلفی یونیکد هست یعنی اینکه نوع داده Native سازگار با یونیکد داره، به طور پیش فرض از اون استفاده میکنه، و خودش قابلیت های مختلف مورد نیاز برای کار با این نوع از داده رو براتون فراهم میکنه. وگرنه شما می تونید با همه داده های یونیکد و غیر یونیکد خودتون با هر کامپایلری به صورت باینری کار کنید، ولی اون وقت باید خودتون همه جزئیات یونیکد رو هندل کنید.
با سلام
از توابع UTF8Encode و UTF8Decode می توانید استفاده نمایید .
موفق باشید