شما شکافی در بازار شبکههای اجتماعی برای پستهای بسیار بسیار کوتاه پیدا کردهاید. حالا که Twitter پستهای ۲۸۰ کاراکتری را مجاز کرده است، به افرادی که دنبال بهروزرسانیهای سریع در شبکههای اجتماعی هستند خدمتی ارائه نمیشود. تصمیم میگیرید شبکهی اجتماعی خودتان را بسازید.
برای اینکه محصولتان قابلتوجه باشد، راه افراط را در پیش میگیرید و فقط پستهای ۵ کاراکتری یا کمتر را مجاز میکنید. هر پستی که بیش از ۵ کاراکتر باشد باید به ۵ کاراکتر بریده شود.
برای اینکه کاربرانتان بتوانند خودشان را کامل بیان کنند، ایموجی و دیگر کاراکترهای یونیکد را مجاز میکنید.
وظیفه این است که رشتههای ورودی را به ۵ کاراکتر برش دهید.
متنی که بهصورت دیجیتال ذخیره میشود باید به مجموعهای از بایتها تبدیل شود. سه روش رایج برای نگاشت کاراکترها به بایت وجود دارد.
UTF-8 و UTF-16 هر دو کدگذاریهای یونیکد هستند، یعنی میتوانند طیف عظیمی از کاراکترها را نمایش دهند، از جمله:
UTF-8 و UTF-16 هر دو کدگذاریهایی با طول متغیر هستند، یعنی کاراکترهای مختلف فضای متفاوتی را اشغال میکنند.
حرف «a» و ایموجی «😛» را در نظر بگیرید. در UTF-16 حرف ۲ بایت را اشغال میکند اما ایموجی ۴ بایت.
نکتهی این تمرین استفاده از APIهایی است که حول کاراکترهای یونیکد (کدپوینتها) طراحی شدهاند، نه حول واحدهای کد یونیکد.
در نسخهی ۸.۱، رشتههای Tcl میتوانستند کاراکترهای یونیکد را بدون هیچ مشکلی مدیریت کنند. در آن زمان، این دستاورد بسیار پیشگامانه بود. اما هرچه کاراکترهای یونیکد بیشتری ساخته شد، توانایی Tcl در مدیریت آنها عقب ماند.
پیادهسازی داخلی Tcl فقط میتوانست کاراکترهای یونیکد ۱۶ بیتی را مدیریت کند، که تنها ۶۵٬۵۲۶ کاراکتر نخست را پوشش میدهد. این صفحهی ویکی Tcl، بهویژه بحث دربارهی زبان «AndroWish»، دلایل آن را توضیح میدهد.
Tcl ۹.۰ نخستین نسخهای است که میتواند کل مجموعهی کاراکترهای یونیکد را مدیریت کند. در نتیجه، این تمرین فقط با Tcl نسخهی ۹.۰ (و آن هم بهآسانی) حل میشود.