اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

تفاوت مقدار عددی کاراکتر فارسی در فایل برنامه و خروجی

0 امتیاز
675 نمایش

من کدی نوشتم که حرف فارسی س رو به خروجی فایل (tmp.txt) می‌بره. قبل این که کاراکتر س رو به خروجی ببرم مقدار عددیش رو نمایش می‌دم که ۱۵۸۷ هست که در مبنای شانزده می‌شه ۶۳۳ که همون معادل شانزده‌تایی ۱۵۸۷ هست. این عدد مقدار عددی کاراکتر س در یونیکد هست.

تا اینجا همه چی خوبه اما مشکل بعد از چاپ کاراکتر در فایل به وجود می‌آد. فایل مورد نظر و با انکدینگ utf-8 ذخیره می‌کنیم. بنابراین کاراکتر س در این انکدینگ به فایل ارسال می‌شه و در نمایش هم با همین انکدینگ به درستی نمایش داده می‌شه.

مشکل در تفاوت مقدار عددی کاراکتر مورد نظر در هنگام اجرا (۱۵۸۷) با مقدار عددی در فایل چاپ شده (۵۵۴۷۵ یا معادل شانزده‌تایی اون d8b3) است.

چرا این دو مقدار با هم تفاوت دارن؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده دوشنبه ۱۷ تیر ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

مقدار دومی که در فایل مشاهده می‌شه یعنی ۵۵۴۷۵ یا همون \xd8\xb3) مقدار کاراکتر 'س' در استاندارد UTF-8 هست و ۱۵۸۷ مقدار همین کاراکتر در استانداردهای UTF-16 و UTF-32. بنابراین مشکلی نیست. فقط این دو خروجی از دو استاندارد استفاده کردن که یک کاراکتر رو نشون می‌ده

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده دوشنبه ۱۷ تیر ۱۳۹۲ توسط prodo