ឧបករណ៍រាប់ byte នេះបង្ហាញពីទំហំពិតប្រាកដដែលអត្ថបទរបស់អ្នកប្រើប្រាស់។ បិទភ្ជាប់ ឬវាយអត្ថបទណាមួយ វានឹងបង្ហាញទំហំភ្លាមៗជា UTF-8 (ការអ៊ិនកូដរបស់គេហទំព័រ, JSON និងមូលដ្ឋានទិន្នន័យភាគច្រើន), UTF-16 (ប្រើដោយ JavaScript, Java និង Windows) និង ASCII / Latin-1 ព្រមជាមួយចំនួន code point, តួអក្សរដែលមើលឃើញ (grapheme clusters), ចំនួនពាក្យ និងចំនួនបន្ទាត់។
ទំហំ byte មានសារៈសំខាន់នៅពេលដែលក្រឡាមូលដ្ឋានទិន្នន័យ (database column), ប្រព័ន្ធ SMS, API ឬទម្រង់ឯកសារកំណត់ទំហំគិតជា byte ជាជាងចំនួនតួអក្សរ។ អក្សរដូចជា é ប្រើ ២ bytes ក្នុង UTF-8 ចំណែកតួអក្សរខ្មែរ ថៃ ចិន និងហិណ្ឌូ ប្រើ ៣ bytes ហើយ emoji ប្រើ ៤ bytes។ តារាងលម្អិត និងមុខងាររំលេចពណ៌ជម្រើសនឹងបង្ហាញច្បាស់ថាតើតួអក្សរណាខ្លះដែលធ្វើឱ្យអត្ថបទរបស់អ្នកមានទំហំធំ។ អ្វីៗទាំងអស់ត្រូវបានរាប់នៅក្នុង Browser របស់អ្នកផ្ទាល់។
របៀបប្រើឧបករណ៍ រាប់ចំនួន Byte
- វាយ ឬបិទភ្ជាប់អត្ថបទរបស់អ្នកទៅក្នុងប្រអប់។
- មើលតួលេខ UTF-8 bytes និងទំហំ UTF-16 ព្រមទាំង Latin-1 នៅក្បែរនោះ។
- ពិនិត្យតារាងដើម្បីដឹងថាតើតួអក្សរប៉ុន្មានដែលប្រើទំហំ 1, 2, 3 ឬ 4 bytes។
- ធីកលើ រំលេចតួអក្សរដែលប្រើ 3 ឬ 4 bytes ដើម្បីស្វែងរកតួអក្សរដែលមានទំហំធំ។
- ចម្លង ឬសម្អាតអត្ថបទនៅពេលអ្នករួចរាល់។
ហេតុអ្វីប្រើ រាប់ចំនួន Byte របស់ ToolOrca
- រាប់ចំនួន byte សម្រាប់ UTF-8, UTF-16 និង Latin-1
- បង្ហាញចំនួន Code point និងតួអក្សរដែលមើលឃើញ (graphemes)
- រាប់បានត្រឹមត្រូវសម្រាប់ emoji និងអត្ថបទភាសាខ្មែរ ថៃ ឬហិណ្ឌូ
- បង្ហាញទំហំជា KB និង MB
- រំលេចតួអក្សរដែលប្រើ 3-byte និង 4-byte
- ដំណើរការក្រៅបណ្ដាញក្នុង Browser របស់អ្នក
តើតួអក្សរមួយមានទំហំប៉ុន្មាន byte?
នៅក្នុង UTF-8 តួអក្សរមួយអាចប្រើពី 1 ដល់ 4 bytes៖ 1 byte សម្រាប់អក្សរឡាតាំងមូលដ្ឋាន លេខ និងសញ្ញាវណ្ណយុត្តិ (កម្រិត ASCII)፤ 2 bytes សម្រាប់អក្សរឡាតាំងដែលមានសញ្ញា អក្សរក្រិក Cyrillic អារ៉ាប់ និងហេប្រឺ፤ 3 bytes សម្រាប់តួអក្សរភាគច្រើនផ្សេងទៀត រួមមាន ខ្មែរ ថៃ Devanagari ចិន ជប៉ុន និងកូរ៉េ ព្រមទាំងនិមិត្តសញ្ញាដូចជា € និង 4 bytes សម្រាប់ emoji និងតួអក្សរកម្រ។
នៅក្នុង UTF-16 តួអក្សរភាគច្រើនប្រើ 2 bytes ហើយតួអក្សរនៅក្រៅ Basic Multilingual Plane ដូចជា emoji ប្រើ 4 bytes (surrogate pair)។ នោះហើយជាមូលហេតុដែល "😀".length របស់ JavaScript ស្មើនឹង 2។ Latin-1 (ISO-8859-1) ប្រើប្រាស់ត្រឹមតែ 1 byte ក្នុងមួយតួអក្សរប៉ុណ្ណោះ ប៉ុន្តែអាចរក្សាទុកបានតែ ២៥៦ តួអក្សរប៉ុណ្ណោះ ដូច្នេះអ្វីៗផ្សេងទៀតមិនអាចរក្សាទុកក្នុងទម្រង់នេះបានឡើយ។
តួអក្សរ, Code point និង Grapheme
អ្វីដែលអ្នកអានមើលឃើញជាតួអក្សរមួយ អាចផ្សំឡើងពី code point ជាច្រើន។ រូប emoji គ្រួសារដូចជា 👨👩👧 ផ្សំឡើងពី code point ចំនួនប្រាំដែលភ្ជាប់គ្នាដោយ zero-width joiner ហើយព្យាង្គខ្មែរ ឬហិណ្ឌូជាច្រើនផ្សំបញ្ចូលគ្នារវាងព្យញ្ជនៈ ស្រៈ និងជើងអក្សរ។ តួលេខ តួអក្សរដែលមើលឃើញ ប្រើប្រាស់មុខងារ Intl.Segmenter របស់ Browser ដើម្បីរាប់ grapheme cluster ទាំងនេះដូចដែលមនុស្សយើងមើលឃើញ ចំណែកឯ code points គឺជាអ្វីដែលភាសាសរសេរកូដភាគច្រើនរាប់។
សំណួរដែលសួរញឹកញាប់
តើខ្ញុំត្រូវពិនិត្យប្រវែង byte នៃ string ដោយរបៀបណា?
បិទភ្ជាប់វាទៅក្នុងប្រអប់ខាងលើ ហើយមើលតួលេខ UTF-8 bytes។ ក្នុងការសរសេរកូដ JavaScript ប្រើ new TextEncoder().encode(s).length, Python ប្រើ len(s.encode("utf-8")) និង PHP ប្រើ strlen($s)។
ហេតុអ្វីបានជាចំនួន byte ច្រើនជាងចំនួនតួអក្សរ?
តួអក្សរណាមួយដែលនៅក្រៅ ASCII មូលដ្ឋាន ត្រូវការលើសពីមួយ byte នៅក្នុង UTF-8។ ប្រយោគភាសាខ្មែរ ឬចិនដែលមាន ១០០ តួអក្សរ ជាទូទៅមានទំហំប្រហែល 300 bytes។
តើរូប emoji មួយមានទំហំប៉ុន្មាន byte?
Emoji ទោលភាគច្រើនមានទំហំ 4 bytes ក្នុង UTF-8 និង 4 bytes ក្នុង UTF-16។ Emoji ដែលមានពណ៌សម្បុរ ឬផ្សំពីរូបច្រើនមានទំហំធំជាងនេះ៖ 👍🏽 មានទំហំ 8 bytes ហើយ 👨👩👧 មានទំហំ 18 bytes ក្នុង UTF-8។
តើការចុះបន្ទាត់រាប់ជា byte ដែរឬទេ?
បាទ/ចាស រាប់។ ការចុះបន្ទាត់លើ Unix (LF) គឺ 1 byte ក្នុង UTF-8។ អត្ថបទដែលចម្លងចេញពី Windows អាចប្រើ CR+LF ដែលស្មើនឹង 2 bytes សម្រាប់ការចុះបន្ទាត់នីមួយៗ។
តើអត្ថបទរបស់ខ្ញុំត្រូវបានបញ្ចូលទៅកាន់ Server ដែរឬទេ?
ទេ មិនមានទេ។ ការរាប់ទាំងអស់ធ្វើឡើងនៅក្នុង Browser របស់អ្នកផ្ទាល់ ហើយគ្មានទិន្នន័យណាមួយត្រូវបានបញ្ជូនទៅកាន់ Server ឡើយ។