រំលងទៅមាតិកា

ឧបករណ៍រាប់ Byte សម្រាប់អត្ថបទ (UTF-8, UTF-16, ASCII)

មើលទំហំ byte ពិតប្រាកដនៃអត្ថបទណាមួយក្នុង UTF-8, UTF-16 និង Latin-1 ពេលអ្នកកំពុងវាយ។

0UTF-8 bytes
0UTF-16 bytes
0ASCII / Latin-1 bytes
0Characters (code points)
0Visible characters (graphemes)
0Words
0Lines
0UTF-8 size in KB
0UTF-8 size in MB
Bytes per character in UTF-8CharactersExamples
1 byte (ASCII)0A–Z, 0–9, punctuation
2 bytes0é, ñ, Greek, Cyrillic, Arabic, Hebrew
3 bytes0Khmer, Thai, Hindi, Chinese, Japanese, Korean, €
4 bytes0Emoji, rare CJK, historic scripts

ឧបករណ៍រាប់ 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

  1. វាយ ឬបិទភ្ជាប់អត្ថបទរបស់អ្នកទៅក្នុងប្រអប់។
  2. មើលតួលេខ UTF-8 bytes និងទំហំ UTF-16 ព្រមទាំង Latin-1 នៅក្បែរនោះ។
  3. ពិនិត្យតារាងដើម្បីដឹងថាតើតួអក្សរប៉ុន្មានដែលប្រើទំហំ 1, 2, 3 ឬ 4 bytes។
  4. ធីកលើ រំលេចតួអក្សរដែលប្រើ 3 ឬ 4 bytes ដើម្បីស្វែងរកតួអក្សរដែលមានទំហំធំ។
  5. ចម្លង ឬសម្អាតអត្ថបទនៅពេលអ្នករួចរាល់។

ហេតុអ្វីប្រើ រាប់ចំនួន 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 ឡើយ។