อ่าน 6 นาที
รหัสหน้า 932 (Microsoft Windows)
รหัสเพจ 932 ของ Microsoft Windows ( ย่อว่า MS932 [ 2 ] [ 3 ] Windows-932 [ 3 ] หรือ CP932 [ 4 ] อย่างคลุมเครือ ) หรือเรียกอีกอย่างว่า Windows-31J และชื่ออื่นๆ (ดู § ศัพท์เฉพาะ...
รหัสหน้า 932 (Microsoft Windows)
| MIME / IANA | วินโดวส์-31เจ |
|---|---|
| ชื่อเล่น | ซีพี943ซี |
| ภาษา | ญี่ปุ่น |
| มาตรฐาน | มาตรฐานการเข้ารหัส WHATWG (ในชื่อ "Shift_JIS") [ 1 ] |
| การจำแนกประเภท | ASCII แบบขยาย , การเข้ารหัสความกว้างแปรผัน[ a ] , การเข้ารหัส CJK |
| ขยาย | กะ JIS |
| |
รหัสเพจ 932 ของ Microsoft Windows (ย่อว่าMS932 [ 2 ] [ 3 ] Windows-932 [ 3 ]หรือCP932 [ 4 ] อย่างคลุมเครือ ) หรือเรียกอีกอย่างว่าWindows-31Jและชื่ออื่นๆ (ดู§ ศัพท์เฉพาะด้านล่าง) เป็นรหัสเพจของ Microsoft Windows สำหรับภาษาญี่ปุ่นซึ่งเป็นรูปแบบขยายของการเข้ารหัสอักขระภาษาญี่ปุ่นShift JIS ประกอบด้วยรหัส ASCII 7 บิตมาตรฐานและอักขระภาษาญี่ปุ่นจะถูกระบุโดยบิตสูงสุดของไบต์แรกถูกตั้งค่าเป็น 1 รหัสบางจุดในเพจนี้ต้องการไบต์ที่สอง ดังนั้นอักขระจึงใช้ 8 หรือ 16 บิตสำหรับการเข้ารหัส
IBM นำเสนอโค้ดแบบสองไบต์ที่ขยายเพิ่มเติมเดียวกันในโค้ดเพจ 943 ( IBM-943หรือCP943 ) [ 5 ] ซึ่งเป็นการรวมกันของ โค้ดเพจ 897แบบไบต์เดียว และ โค้ดเพจ 941แบบสองไบต์[ 6 ]
Windows-31J เป็นการเข้ารหัสภาษาญี่ปุ่นที่ไม่ใช่UTF-8 /Unicode ที่ใช้กันมากที่สุดบนเว็บ อย่างไรก็ตาม ผู้คนและแพ็กเกจซอฟต์แวร์จำนวนมาก รวมถึงไลบรารีของ Microsoft [ 7 ]ประกาศ การเข้ารหัส Shift JISสำหรับข้อมูล Windows-31J แม้ว่าจะมีอักขระเพิ่มเติมบางตัว และอักขระที่มีอยู่บางตัวถูกแมปไปยังUnicodeแตกต่างกัน สิ่งนี้ทำให้มาตรฐาน HTML ของ WHATWG ถือว่าป้ายกำกับการเข้ารหัสshift_jisและwindows-31jสามารถใช้แทนกันได้ และใช้ตัวแปร Windows สำหรับตัวเข้ารหัสและตัวถอดรหัส "Shift_JIS" [ 1 ]
ศัพท์เฉพาะ
รูปแบบ Shift JIS ของ Microsoft เป็นที่รู้จักกันในชื่อ "Code page 932" บน Microsoft Windows อย่างไรก็ตาม สิ่งนี้มีความคลุมเครือ เนื่องจากcode page 932 ของ IBMแม้จะเป็นรูปแบบ Shift JIS เช่นกัน แต่ก็ขาดส่วนขยายของผู้จำหน่ายแบบดับเบิลไบต์ของ NEC และ NEC-selected ซึ่งมีอยู่ในรูปแบบของ Microsoft (แม้ว่าทั้งสองจะรวมส่วนขยายของ IBM ไว้ด้วย) และยังคงรักษาลำดับของ JIS X 0208 ในปี 1978 ไว้[ 5 ]
รหัสเพจ 943 ของ IBM (หรือ "IBM-943") ประกอบด้วยรหัสไบต์คู่เดียวกันกับรหัสเพจ 932 ของ Windows [ 5 ]เวอร์ชันของ Microsoft สอดคล้องกับการเข้ารหัสที่เรียกว่าibm-943_P15A-2003 (รวมถึงชื่อเรียกอื่นๆ เช่นCP943CและWindows-932 ) [ 3 ]ในInternational Components for Unicode (ICU) นอกจากนี้ยังมีการเข้ารหัส ICU อีกแบบหนึ่งชื่อibm-943_P130-1999 [ 8 ]ซึ่งใช้การแมปไบต์เดี่ยวที่แตกต่างกันซึ่งตรงกับคำจำกัดความรหัสเพจของ IBM มากกว่า (ดู รายละเอียดในหัวข้อ § ความแตกต่าง ของอักขระไบต์เดี่ยวด้านล่าง)
รหัสหน้า Windows 932 ได้รับการลงทะเบียนกับIANAในชื่อWindows-31J [ 9 ] ป้ายกำกับ "Windows-31J" เป็นของ IANA และไม่ได้รับการยอมรับจาก Microsoft ซึ่งในอดีตใช้ "shift_jis" แทน[ 7 ]มาตรฐาน การเข้ารหัส W3C / WHATWGที่ใช้โดยHTML5ถือว่าป้ายกำกับ " shift_jis " สามารถใช้แทนกันได้กับ "windows-31j" โดยมีเจตนาที่จะ "เข้ากันได้กับเนื้อหาที่เผยแพร่" [ 10 ]และตรงกับรหัสหน้า Windows 932 [ 1 ] (รวมถึง "ส่วนขยายที่เป็นกรรมสิทธิ์เดิมจาก IBM และ NEC") [ 11 ]
รหัสหน้า Windows 932 ยังเรียกว่าMS_Kanji [ 3 ] [ 12 ] แม้ว่า IANA จะ ถือว่า MS_Kanji เป็นชื่อแทนของ Shift JIS มาตรฐาน[ 9 ]ตัวอย่างเช่นPython ใช้ป้ายกำกับ (หรือ) สำหรับ Windows-932 และป้ายกำกับ(หรือ) สำหรับ Shift JIS ที่กำหนดโดย JIS X 0208 โดยไม่รู้จักป้ายกำกับ[ 12 ]MS-Kanjicp932Shift_JISsjisWindows-31J
ในระบบปฏิบัติการ Windows เวอร์ชันภาษาญี่ปุ่น ชุดรหัสนี้เรียกว่า "ANSI"เนื่องจากเป็นการเข้ารหัส 8 บิตเริ่มต้นของระบบปฏิบัติการ แม้ว่าANSIจะไม่ได้มีส่วนร่วมในการกำหนดนิยาม ก็ตาม
ความแตกต่างจากมาตรฐานการเปลี่ยนกะ JIS
Windows-31J มักถูกเข้าใจผิดว่าเป็น Shift JIS มาตรฐาน (ตามที่กำหนดไว้ในJIS X 0208 :1997 ภาคผนวก 1) แม้จะคล้ายกัน แต่ความแตกต่างนี้มีความสำคัญสำหรับโปรแกรมเมอร์คอมพิวเตอร์ที่ต้องการหลีกเลี่ยง mojibake
ความแตกต่างของอักขระสองไบต์

นอกจากอักขระมาตรฐานJIS X 0201 :1997 และJIS X 0208 :1997 แล้ว Windows-31J ยังรวมส่วนขยาย JIS X 0208 หลายรายการ ได้แก่ " อักขระพิเศษของ NEC (แถวที่ 13), การเลือกส่วนขยายของ IBM โดย NEC (แถวที่ 89 ถึง 92) และส่วนขยายของ IBM (แถวที่ 115 ถึง 119)" [ 9 ]นอกเหนือจากการจัดสรรพื้นที่การเข้ารหัสบางส่วนไว้สำหรับ การกำหนด ค่าโดยผู้ใช้ปลายทาง[ 13 ]ซึ่งแตกต่างจากIBM-932ซึ่งไม่รวมส่วนขยายของ NEC หรือการเลือกของ NEC [ 5 ]
ส่วนขยายของ IBM ได้รับการออกแบบมาเพื่อเข้ารหัสอักขระจาก ชุดอักขระ DBCS-Host ภาษาญี่ปุ่นของ IBMซึ่งเดิมทีไม่มีอยู่ใน JIS X 0208 เครื่องหมาย 'เพราะ' ∵ และเครื่องหมาย 'ไม่ใช่'¬ ถูกเพิ่มเข้าไปใน JIS X 0208 ในปี 1983 และ Microsoft ได้รวมเครื่องหมายเหล่านี้ไว้ในตำแหน่งส่วนขยายเช่นเดียวกับตำแหน่งในปี 1983 [ 14 ]ส่วนขยายของ NEC ยังเข้ารหัสชุดอักขระทั้งหมดของ IBM ด้วย แต่ในส่วนขยายแยกต่างหากภายในตาราง JIS X 0208 ขนาด 94×94 (ในแถวที่ 89–92 นอกเหนือจากอักขระที่รวมอยู่ในแถวที่ 13 ของ NEC แล้ว ) แทนที่จะใช้รหัส Shift JIS นอกช่วง JIS X 0208 หน้าโค้ด Windows 932 ประกอบด้วยอักขระ 388 ตัวนี้ในทั้งสองตำแหน่ง[ 14 ]ด้วยเหตุนี้ เครื่องหมาย 'เพราะ' และ 'ไม่ใช่' จึงถูกเข้ารหัสสามครั้ง
ต่อมามีการใช้การแสดงแทนบางส่วนเหล่านี้สำหรับอักขระที่แตกต่างกันโดยJIS X 0213และShift JIS-2004ตัวอย่างเช่น เปรียบเทียบแถวที่ 89 ใน JIS X 0213 (ขึ้นต้นด้วย 硃, 硎, 硏...) [ 15 ]กับแถวที่ 89 ที่ใช้โดย JIS X 0208 พร้อมส่วนขยายของ IBM/NEC (ขึ้นต้นด้วย 纊, 褜, 鍈...) [ 16 ]ด้วยเหตุนี้ Shift JIS-2004 จึงไม่เข้ากันกับ Windows-31J
นอกเหนือจากข้างต้นแล้ว Microsoft ยังใช้การแมป Unicode ที่แตกต่างกัน (แต่ดูคล้ายกัน) สำหรับอักขระเครื่องหมายวรรคตอนสองไบต์หลายตัวเมื่อเทียบกับ Shift JIS มาตรฐาน เช่น เครื่องหมายขีดกลางคลื่นถูกแมปเป็น U+FF5Eแทนที่จะเป็น U+301C [ 17 ]ซึ่งตามด้วย ibm-943_P15A-2003 [ 18 ]แต่ไม่ใช่ ibm-943_P130-1999 [ 19 ]และใช้การแมปที่แตกต่างกันสำหรับเครื่องหมายแบ็กสแลชสองไบต์[ 17 ]
ความแตกต่างของอักขระไบต์เดียว
Windows-932 ประกอบด้วยการแมป ASCII 7 บิตมาตรฐานสำหรับลำดับไบต์เดียวโดยตั้งค่าบิตสูงสุดเป็น 0 ดังนั้น รหัส 0x5C และ 0x7E จึงถูกแมปไปยัง Unicode เป็น U+005C REVERSE SOLIDUS ( \, เครื่องหมายแบ็กสแลช ) และ U+007E TILDE ( ~) ตามลำดับ[ 20 ] [ 21 ] [ 17 ]เช่นเดียวกับใน ASCII ( ISO-646 -US) มาตรฐานการเข้ารหัส W3C/WHATWG ก็ทำเช่นเดียวกัน[ 22 ]ในทางตรงกันข้าม 0x5C ถูกแมปไปยัง U+00A5 YEN SIGN ( ¥) ในISO-646-JPและด้วยเหตุนี้JIS X 0201ซึ่งมาตรฐานShift JISเป็นส่วนขยาย ในทำนองเดียวกัน Windows-31J หลีกเลี่ยงการเข้ารหัสซ้ำของแบ็กสแลชโดยการแมปไบต์คู่ 0x815F ไปยัง U+FF3C FULLWIDTH REVERSE SOLIDUS ในขณะที่ Shift JIS มาตรฐานจะแมปไปยัง U+005C [ 17 ]
อย่างไรก็ตาม 0x5C ใน Windows-932 ยังคงถือว่าเป็นสัญลักษณ์เงินเยนในบางบริบท[ 23 ]ด้วยเหตุนี้ ในแบบอักษรญี่ปุ่นหลายๆ แบบ U+005C จึงแสดงเป็นสัญลักษณ์เงินเยน ซึ่งโดยปกติจะแสดงเป็น U+00A5 แทนที่จะเป็นเครื่องหมายทับตามการแสดงผลที่แนะนำของ Unicode U+00A5 ถูกแมปแบบพอดีที่สุดทางเดียวไปยัง 0x5C ใน Windows-932 อย่างไรก็ตาม รหัส 0x5C ใน Windows-932 ทำงานเหมือนเครื่องหมายทับกลับด้านในทุกด้าน (เช่น ในเส้นทางไฟล์บนระบบ Windows) ยกเว้นวิธีการแสดงผลโดยแบบอักษรบางแบบ[ 23 ]และเอกสารของ Microsoft สำหรับ Windows-932 แสดง 0x5C เป็นเครื่องหมายทับ[ 21 ]การแมปนี้[ 20 ]สอดคล้องกับการเข้ารหัสชื่อ "ibm-943_P15A-2003" ในInternational Components for Unicode (ICU) [ 3 ] ยกเว้นการเรียงลำดับใหม่เล็กน้อยของ อักขระควบคุม C0บาง ตัว
IBM-943เช่นเดียวกับIBM-932 [ 5 ] เป็น ซูเปอร์เซ็ตของ โค้ดเพจ 897 แบบไบต์เดียว[ 6 ]ซึ่งแมป 0x5C กับสัญลักษณ์เยน ( ¥) และ 0x7E กับเส้นขีดบน ( ‾) [ 24 ]ตามด้วยการเข้ารหัสชื่อ "ibm-943_P130-1999" ใน ICU [ 8 ]โค้ดเพจ 897 (และด้วยเหตุนี้ IBM-943 และ IBM-932 จึงเช่นกัน) ยังเพิ่มอักขระวาดกล่องแบบไบต์เดียวแทนที่อักขระควบคุม C0 บางตัว[ 24 ]อย่างไรก็ตามอักขระเหล่านี้อาจยังคงถูกมองว่าเป็นอักขระควบคุมขึ้นอยู่กับบริบท[ 25 ]และถูกแมปกับอักขระควบคุมใน ICU [ 8 ]
เค้าโครง
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ดูเพิ่มเติม
ลิงก์ภายนอก
ที่เกี่ยวข้องกับ Microsoft
- เอกสารอ้างอิงของ Microsoft สำหรับรหัสหน้า 932 ของ Windows
- ไฟล์หน้าโค้ดสำหรับ MS932
- การแปลงรหัสหน้า 932 ของ Microsoft ไปเป็น Unicode
- การสาธิตการใช้งานหน้าโค้ด ICU 943C (ibm-943_P15A-2003 alias windows-31j)
ที่เกี่ยวข้องกับ IBM
- เอกสารของ IBM เกี่ยวกับรหัสหน้า 943
- การสาธิตหน้าโค้ด ICU 943 (ibm-943_P130-1999)
- การแมป ICU สำหรับ ibm-943_P130-1999 ไปยัง Unicode
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ รหัสหน้า 932 (Microsoft Windows)
รหัสเพจ 932 ของ Microsoft Windows ( ย่อว่า MS932 [ 2 ] [ 3 ] Windows-932 [ 3 ] หรือ CP932 [ 4 ] อย่างคลุมเครือ ) หรือเรียกอีกอย่างว่า Windows-31J และชื่ออื่นๆ (ดู § ศัพท์เฉพาะ...
ศัพท์เฉพาะ
รูปแบบ Shift JIS ของ Microsoft เป็นที่รู้จักกันในชื่อ "Code page 932" บน Microsoft Windows อย่างไรก็ตาม สิ่งนี้มีความคลุมเครือ เนื่องจาก code page 932 ของ IBM แม้จะเป็นรูปแบบ Shift JIS เช่นกัน แต่ก็ขาดส่วนขยายของผู้จำหน่ายแบบดับเบิลไบต์ของ NEC และ...
ความแตกต่างจากมาตรฐานการเปลี่ยนกะ JIS
Windows-31J มักถูกเข้าใจผิดว่าเป็น Shift JIS มาตรฐาน (ตามที่กำหนดไว้ใน JIS X 0208 :1997 ภาคผนวก 1) แม้จะคล้ายกัน แต่ความแตกต่างนี้มีความสำคัญสำหรับโปรแกรมเมอร์คอมพิวเตอร์ที่ต้องการหลีกเลี่ยง mojibake
ความแตกต่างของอักขระสองไบต์
นอกจากอักขระมาตรฐาน JIS X 0201 :1997 และ JIS X 0208 :1997 แล้ว Windows-31J ยังรวมส่วนขยาย JIS X 0208 หลายรายการ ได้แก่ " อักขระพิเศษของ NEC (แถวที่ 13), การเลือกส่วนขยายของ IBM โดย NEC (แถวที่ 89 ถึง 92) และส่วนขยายของ IBM (แถวที่ 115 ถึง 119)" [ 9 ]...