نمایش نتایج 1 تا 10 از 10

نام تاپیک: تابع تبدیل CP1256 به UTF8

  1. #1

    تابع تبدیل CP1256 به UTF8

    سلام

    این تابع هر رشته ای که دارای کد پیج ویندوز عربی یا CP1256 باشد را به کد پیج استاندارد UTF-8 تبدیل میکند.


    FUNCTION Cp1256ToUtf8
    LPARAMETERS tcString
    lcReturnString = ""
    FOR i=1 TO LEN(tcString)
    lcChar1 = Cp1256ToUtf8No(SUBSTR(tcString,i,1))
    DO CASE
    CASE LEN(lcChar1)=2
    lcChar2 = CHR(EVALUATE("0x"+lcChar1))
    CASE LEN(lcChar1)=4
    lcChar2 = CHR(EVALUATE("0x"+SUBSTR(lcChar1,1,2)))+;
    CHR(EVALUATE("0x"+SUBSTR(lcChar1,3,2)))
    CASE LEN(lcChar1)=6
    lcChar2 = CHR(EVALUATE("0x"+SUBSTR(lcChar1,1,2)))+;
    CHR(EVALUATE("0x"+SUBSTR(lcChar1,3,2)))+;
    CHR(EVALUATE("0x"+SUBSTR(lcChar1,5,2)))
    ENDCASE

    lcReturnString = lcReturnString + lcChar2
    NEXT
    RETURN lcReturnString




    FUNCTION Cp1256ToUtf8No
    LPARAMETERS tcChar
    LOCAL lcUtf8,lnComma1,lnComma2, lnChar
    lnChar = ASC(tcChar)
    IF lnChar=0
    RETURN "00"
    ENDIF
    lcUtf8 = "0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09 ,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,"+;
    "0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19 ,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,"+;
    "0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29 ,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,"+;
    "0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39 ,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,"+;
    "0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49 ,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,"+;
    "0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59 ,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,"+;
    "0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69 ,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,"+;
    "0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79 ,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,"+;
    "0xE282AC,0xD9BE,0xE2809A,0xC692,0xE2809E,0xE280A6 ,0xE280A0,0xE280A1,0xCB86,"+;
    "0xE280B0,0xD9B9,0xE280B9,0xC592,0xDA86,0xDA98,0xD A88,0xDAAF,0xE28098,0xE28099,"+;
    "0xE2809C,0xE2809D,0xE280A2,0xE28093,0xE28094,0xDA A9,0xE284A2,0xDA91,0xE280BA,"+;
    "0xC593,0xE2808C,0xE2808D,0xDABA,0xC2A0,0xD88C,0xC 2A2,0xC2A3,0xC2A4,0xC2A5,"+;
    "0xC2A6,0xC2A7,0xC2A8,0xC2A9,0xDABE,0xC2AB,0xC2AC, 0xC2AD,0xC2AE,0xC2AF,0xC2B0,"+;
    "0xC2B1,0xC2B2,0xC2B3,0xC2B4,0xC2B5,0xC2B6,0xC2B7, 0xC2B8,0xC2B9,0xD89B,0xC2BB,"+;
    "0xC2BC,0xC2BD,0xC2BE,0xD89F,0xDB81,0xD8A1,0xD8A2, 0xD8A3,0xD8A4,0xD8A5,0xD8A6,"+;
    "0xD8A7,0xD8A8,0xD8A9,0xD8AA,0xD8AB,0xD8AC,0xD8AD, 0xD8AE,0xD8AF,0xD8B0,0xD8B1,"+;
    "0xD8B2,0xD8B3,0xD8B4,0xD8B5,0xD8B6,0xC397,0xD8B7, 0xD8B8,0xD8B9,0xD8BA,0xD980,"+;
    "0xD981,0xD982,0xD983,0xC3A0,0xD984,0xC3A2,0xD985, 0xD986,0xD987,0xD988,0xC3A7,"+;
    "0xC3A8,0xC3A9,0xC3AA,0xC3AB,0xD989,0xD98A,0xC3AE, 0xC3AF,0xD98B,0xD98C,0xD98D,"+;
    "0xD98E,0xC3B4,0xD98F,0xD990,0xC3B7,0xD991,0xC3B9, 0xD992,0xC3BB,0xC3BC,0xE2808E,"+;
    "0xE2808F,0xDB92,"

    lnComma1 = AT(",",lcUtf8,lnChar)
    lnComma2 =AT(",",lcUtf8,lnChar+1)
    RETURN SUBSTR(lcUtf8,lnComma1+3,lnComma2-lnComma1-3)


    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  2. #2
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107
    با تشکر از کدتون اما نظرتون راجع به STRCONV( ) چیه؟
    فکر کنم یکبار برای تبدیل فارسی که مینوشتم به utf8 ازش استفاده کردم
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  3. #3
    متاسفانه درست کار نمیکنه.

    چون cp1256 توی این لیست نیست. و البته درست هم تبدیل نمیکنه.
    این تابع را قبل از تشکیل xml می توان بکار برد چون فاکس پرو در تابع cursortoxml درست عمل نمیکند.
    این هم آدرسی که من از جدولش استفاده کرده ام (opensolaris)

    http://src.opensolaris.org/source/xr...1256+UTF-8.src
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  4. #4
    کاربر دائمی آواتار Esikhoob
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    Tehran
    پست
    277

    نقل قول: تابع تبدیل CP1256 به UTF8

    با سلام
    سئوالی برای من در مورد فارسی ویژوال فاکس پرو(Windows Arabic 1256) و اختلاف آن با UTF8 پیش آمده.
    تا به حال فکر میکردم متن فارسی ویژوال فاکس پرو همان UTF8 است
    چرا وقتی یک متن فارسی را از Word کپی paste میکنیم در VFP9 ، درست نشان میدهد ؟ مگر متن فارسی Word بر اساس UTF8 نیست؟

    البته من حدس میزنم در هنگام کپی کردن از UTF8 به برنامه های غیر UTF8 ، خود ویندوز این تبدیل را انجام میدهد.
    آخرین ویرایش به وسیله Esikhoob : یک شنبه 12 آبان 1387 در 20:05 عصر دلیل: اضافه کردن جمله آخر

  5. #5

    نقل قول: تابع تبدیل CP1256 به UTF8

    کلا ویندوز از استاندارد خودش استفاده میکنه. مک هم از خودش. IBM هم از خودش.

    UTF مربوط به ISO است که در لینوکس پیش فرض است.
    http://en.wikipedia.org/wiki/ISO_8859
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  6. #6
    کاربر دائمی آواتار Esikhoob
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    Tehran
    پست
    277

    نقل قول: تابع تبدیل CP1256 به UTF8

    سلام
    دوست عزیز ، مقاله ای که لینکش را داده بودی خواندم.
    یک سئوال برایم ایجاد شد که دوست دارم از شما بپرسم:
    2 اصطلاح در متن به کار رفته که فکر میکنم برای درک این استانداردها مهم باشد، فرق این دو اصطلاح چیست:
    numeric code points و fixed bit-width value
    fixed bit-width value از نظر من همان است که در ASCII قدیمی مورد استفاده بوده

    اگر پاسخ بدهید ، خیلی متشکر میشوم.
    با تشکر
    آخرین ویرایش به وسیله Esikhoob : شنبه 09 آذر 1387 در 18:40 عصر

  7. #7

    نقل قول: تابع تبدیل CP1256 به UTF8

    به نظر من هم همینطوره
    اگر سایر دوستان اطلاعاتی دارند ارائه کنند تا استفاده کنیم
    در تندیس های تخت جمشید هیچ کس در حال تعظیم نیست ، هیچ کس عصبانی نیست ، هیچ کس سرافکنده و شکست خورده نیست ، هیچ کس سوار بر اسب نیست ، هیچ قومی بر قوم دیگر برتر نیست ، هیچ کس برده نیست و هیچ تصویر خشنی دیده نمیشود.
    ************************************************** ******************************************
    اندیشه کن , آنگاه سخن گو تا از لغزش بر کنار باشی

  8. #8
    کاربر دائمی آواتار Esikhoob
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    Tehran
    پست
    277

    نقل قول: تابع تبدیل CP1256 به UTF8

    تا آنجا که فهمیدم "numeric code points" چیزی نیست بجز همان کد برای کاراکتر.
    UTF-8 هم نوع آسان شده (البته هنوز سادگیش را نفهمیدم) از UNICODE هست تا با کدبندیهای قدیمی سازگار باشد و سیستم های بیشتری آن را بفهمند.

  9. #9
    کاربر دائمی آواتار Esikhoob
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    Tehran
    پست
    277

    نقل قول: تابع تبدیل CP1256 به UTF8

    از راه ساختن فایلهای txt با متن فارسی و انگلیسی با کد پیج های مختلف و دیدن ظرفیت های آنها و همینطور استفاده از برنامه \microsoft visual foxpro 9\Tools\HexEdit ، به این نتایج دست پیدا کردم :
    در 1256 ARABIC و کد پیج ایران سیستم که مورد استفاده فاکس پرو است، هر کاراکتر یک بایت است .
    در UTF-8 هر کاراکتر فارسی 2 بایت است در حالی که کاراکتر انگلیسی 1 بایت است.
    در UNICODE یا UTF-16 هر کاراکتر(چه فارسی چه انگلیسی) 2 بایت هست.

    تا آنجا که من دیدم اینطوری بود ، آیا این صحبتها اشکالی دارد؟

  10. #10

    نقل قول: تابع تبدیل CP1256 به UTF8

    سلام
    ميخام يه متن فارسي رو به يونيكد تبديل كنم از تابع آقاي توكل و همجنين تابع STRCONV استفاده كردم ولي به نتيجه نرسيدم ، كسي از دوستان ميتونه كمك كنه كه مشكل كجاست ؟!

تاپیک های مشابه

  1. ایجاد یک فایل با فورمت UTF8 بر روی سرور
    نوشته شده توسط FirstLine در بخش VB.NET
    پاسخ: 1
    آخرین پست: چهارشنبه 10 مرداد 1386, 14:27 عصر
  2. ذخیره اطلاعات با CP1256 در Mysql
    نوشته شده توسط maa_biz در بخش PHP
    پاسخ: 1
    آخرین پست: پنج شنبه 12 بهمن 1385, 20:33 عصر
  3. نمایش ؟ بجای کاراکترهای فارسی utf8
    نوشته شده توسط once4ever در بخش PHP
    پاسخ: 4
    آخرین پست: یک شنبه 23 بهمن 1384, 20:53 عصر
  4. چگونه یک رشته CP1256 را به Unicode تبدیل کنم؟
    نوشته شده توسط rezaTavak در بخش برنامه‌نویسی جاوا
    پاسخ: 2
    آخرین پست: دوشنبه 17 مرداد 1384, 13:42 عصر
  5. خواندن کارکترهای utf8 از فایل
    نوشته شده توسط aminzadeh_mojtaba در بخش PHP
    پاسخ: 1
    آخرین پست: شنبه 30 آبان 1383, 18:47 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •