من کدی نوشتم که حرف فارسی س
رو به خروجی فایل (tmp.txt
) میبره. قبل این که کاراکتر س
رو به خروجی ببرم مقدار عددیش رو نمایش میدم که ۱۵۸۷ هست که در مبنای شانزده میشه ۶۳۳ که همون معادل شانزدهتایی ۱۵۸۷ هست. این عدد مقدار عددی کاراکتر س
در یونیکد هست.
تا اینجا همه چی خوبه اما مشکل بعد از چاپ کاراکتر در فایل به وجود میآد. فایل مورد نظر و با انکدینگ utf-8
ذخیره میکنیم. بنابراین کاراکتر س
در این انکدینگ به فایل ارسال میشه و در نمایش هم با همین انکدینگ به درستی نمایش داده میشه.
مشکل در تفاوت مقدار عددی کاراکتر مورد نظر در هنگام اجرا (۱۵۸۷) با مقدار عددی در فایل چاپ شده (۵۵۴۷۵ یا معادل شانزدهتایی اون d8b3
) است.
چرا این دو مقدار با هم تفاوت دارن؟
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)