در خاموادهٔ Unix با r\ با کد ASCII برابر 0x0A و در خانوادهٔ ویندوز با r\n\ یعنی اول 0x0A و بعد 0x0D. در خانوادهٔ مکینتاش هم با یک 0x0D خالی.
اشتباه ننوشتید؟ فکر کنم اینجوری هست:
Unix/Linux newline = \n = 0x0A
Dos/Windows newline = \r\n = 0x0A 0x0D
Mac newline = \n\r = 0x0D 0x0A
لینوکس و ویندوز رو که مطمئنم درست نوشتم. مک رو شک دارم.
۴− تو کتاب how to program نوشته:
Characters in Java are Unicode characters composed of two bytes,
یعنی هر کاراکتر یک کارکتر unicode هست و ۲ بایت اشغال می کنه در صورتی که فقط حروف فارسی ۲ بایت اشغال می کنند و حروف انگلیسی فقط یک بایت. آیا این تناقص نیست؟
شاید اون UTF-16 هست. در ضمن فکر میکنم این جملهٔ اون کتاب فقط در مورد نوع دادهٔ char در جاوا باشه. نه همه جای جاوا! تا اونجایی که من میدونم جاوا متدهایی به نام writeUTF و readUTF در مورد فایلها داره که بر طبق UTF-8 عمل میکنن(که حروف انگلیسی توش تکبایتی هستن).
در ضمن توی UTF-8 بعضی زبونها(مثل چینی و ژاپنی) حروفشون سه بایت هستن.
ظاهرا توی UTF-16 همهٔ کاراکترها دو بایتی هست. اما توی UTF-8 بعضی کاراکترها یکبایتی هستن(کاراکرهای انگلیسی)، بعضی دوبایتی (مثل کاراکترهای فارسی و عربی. به جز چند تا کاراکتر بسیار غیرمشهور و نادر که چهاربایتی هستن) و بعضی هم (مثل کاراکترهای ژاپنی) سه بایتی هستن.
با این حساب احتمالا نحوهٔ ذخیرهسازی نوع داده char در جاوا به شیوهٔ UTF-16 باشه.