การอ้างอิงอักขระที่เป็นตัวเลข

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา

อ้างอิงตัวละครที่เป็นตัวเลข ( NCR ) เป็นเรื่องธรรมดามาร์กอัปสร้างที่ใช้ในSGMLและ SGML ที่ได้มาจากภาษามาร์กอัปเช่นHTMLและXMLประกอบด้วยลำดับสั้น ๆ ของอักขระที่แทนอักขระตัวเดียว ตั้งแต่WebSgml , XMLและHTML 4จุดรหัสของยูนิเวอร์แซตัวละครชุด (UCS) ของUnicodeถูกนำมาใช้ โดยทั่วไปจะใช้ NCR เพื่อแสดงอักขระที่ไม่สามารถเข้ารหัสได้โดยตรงในเอกสารเฉพาะ (เช่น เนื่องจากเป็นอักขระสากลที่ไม่เข้ากับชุดอักขระ 8 บิตที่กำลังใช้อยู่ หรือเนื่องจากมีความหมายทางวากยสัมพันธ์พิเศษในภาษา) เมื่อเอกสารถูกตีความโดยโปรแกรมอ่านที่ทราบมาร์กอัป NCR แต่ละรายการจะได้รับการปฏิบัติเสมือนว่าเป็นอักขระที่แสดง

ตัวอย่าง

ใน SGML, HTML และ XML ต่อไปนี้คือการอ้างอิงอักขระตัวเลขที่ถูกต้องทั้งหมดสำหรับอักษรตัวพิมพ์ใหญ่ภาษากรีก Sigma

การอ้างอิงอักขระที่เป็นตัวเลขของU+03A3 Σ GREEK CAPITAL LETTER SIGMA
(โปรดทราบว่า 3A3 16 = 931 10 )
อักขระ Unicode ฐานตัวเลข การอ้างอิงตัวเลขในมาร์กอัป ผล
U+03A3 ทศนิยม Σ Σ
U+03A3 ทศนิยม Σ Σ
U+03A3 เลขฐานสิบหก Σ Σ
U+03A3 เลขฐานสิบหก Σ Σ
U+03A3 เลขฐานสิบหก Σ Σ

ใน SGML, HTML และ XML ต่อไปนี้คือการอ้างอิงอักขระตัวเลขที่ถูกต้องทั้งหมดสำหรับอักษรละตินตัวพิมพ์ใหญ่ AE

การอ้างอิงอักขระที่เป็นตัวเลขของU+00C6 Æ LATIN CAPITAL LETTER AE
อักขระ Unicode ฐานตัวเลข การอ้างอิงตัวเลขในมาร์กอัป ผล
U+00C6 ทศนิยม Æ Æ
U+00C6 เลขฐานสิบหก Æ Æ

ใน SGML, HTML และ XML ต่อไปนี้คือการอ้างอิงอักขระตัวเลขที่ถูกต้องทั้งหมดสำหรับตัวอักษรละตินตัวเล็ก sharp s ß

การอ้างอิงอักขระที่เป็นตัวเลขของU+00DF ß LATIN SMALL LETTER SHARP S
อักขระ Unicode ฐานตัวเลข การอ้างอิงตัวเลขในมาร์กอัป ผล
U+00DF ทศนิยม ß ß
U+00DF เลขฐานสิบหก ß ß

รายการการอ้างอิงอักขระที่เป็นตัวเลขสำหรับอักขระ ASCII ที่พิมพ์ได้:

อักขระ Unicode การ
อ้างอิงอักขระ
(ทศนิยม)
การ
อ้างอิงอักขระ
(เลขฐานสิบหก)
ผล
U+0020 (ช่องว่าง)
U+0021 ! ! !
U+0022 " " "
U+0023 # # #
U+0024 $ $ $
U+0025 % % %
U+0026 & & &
U+0027 ' ' '
U+0028 ( ( (
U+0029 ) ) )
U+002A * * *
U+002B + + +
U+002C , , ,
U+002D - - -
U+002E . . .
U+002F / / /
U+0030 0 0 0
U+0031 1 1 1
U+0032 2 2 2
U+0033 3 3 3
U+0034 4 4 4
U+0035 5 5 5
U+0036 6 6 6
U+0037 7 7 7
U+0038 8 8 8
U+0039 9 9 9
U+003A : : :
U+003B ; ; ;
U+003C < < <
U+003D = = =
U+003E > > >
U+003F ? ? ?
U+0040 @ @ @
U+0041 A A อา
U+0042 B B บี
U+0043 C C
U+0044 D D ดี
U+0045 E E อี
U+0046 F F F
U+0047 G G จี
U+0048 H H ชม
U+0049 I I ผม
U+004A J J เจ
U+004B K K K
U+004C L L หลี่
U+004D M M เอ็ม
U+004E N N นู๋
U+004F O O อู๋
U+0050 P P พี
U+0051 Q Q คิว
U+0052 R R R
U+0053 S S
U+0054 T T ตู่
U+0055 U U ยู
U+0056 V V วี
U+0057 W W W
U+0058 X X X
U+0059 Y Y Y
U+005A Z Z Z
U+005B [ [ [
U+005C \ \ \
U+005D ] ] ]
U+005E ^ ^ ^
U+005F _ _ _
U+0060 ` ` '
U+0061 a a เอ
U+0062 b b
U+0063 c c
U+0064 d d d
U+0065 e e อี
U+0066 f f
U+0067 g g g
U+0068 h h ชม
U+0069 i i ผม
U+006A j j เจ
U+006B k k k
U+006C l l l
U+006D m m
U+006E n n
U+006F o o o
U+0070 p p พี
U+0071 q q q
U+0072 r r r
U+0073 s s
U+0074 t t t
U+0075 u u ยู
U+0076 v v วี
U+0077 w w w
U+0078 x x x
U+0079 y y y
U+007A z z z
U+007B { { {
U+007C | | -
U+007D } } }
U+007E ~ ~ ~

อภิปราย

ภาษามาร์กอัปมักถูกกำหนดเป็นอักขระ UCS หรือ Unicode นั่นคือเอกสารประกอบในระดับพื้นฐานที่สุดของนามธรรมลำดับของตัวละครซึ่งเป็นหน่วยที่เป็นนามธรรมที่มีอยู่เป็นอิสระของการเข้ารหัส

ตามหลักการแล้ว เมื่ออักขระของเอกสารที่ใช้ภาษามาร์กอัปถูกเข้ารหัสสำหรับการจัดเก็บหรือส่งผ่านเครือข่ายเป็นลำดับของบิตการเข้ารหัสที่ใช้จะเป็นอักขระที่รองรับการแทนอักขระทุกตัวในเอกสาร หากไม่อยู่ใน ทั้งหมดของ Unicode โดยตรงเป็นลำดับบิตเฉพาะ

แม้ว่าบางครั้ง เพื่อความสะดวกหรือเนื่องจากข้อจำกัดทางเทคนิค เอกสารจะถูกเข้ารหัสด้วยการเข้ารหัสที่ไม่สามารถแสดงอักขระบางตัวได้โดยตรง ยกตัวอย่างเช่นการเข้ารหัสใช้กันอย่างแพร่หลายอยู่บนพื้นฐานของมาตรฐาน ISO 8859เท่านั้นสามารถเป็นตัวแทนที่มากที่สุด 256 ตัวอักษรที่ไม่ซ้ำกันเป็นหนึ่งใน 8 บิตไบต์ในแต่ละ

ในทางปฏิบัติ เอกสารมักไม่ค่อยได้รับอนุญาตให้ใช้การเข้ารหัสภายในมากกว่าหนึ่งไฟล์ ดังนั้นความรับผิดชอบมักจะอยู่ในภาษามาร์กอัปเพื่อให้เป็นวิธีการสำหรับผู้เขียนเอกสารในการแสดงอักขระที่ไม่สามารถเข้ารหัสได้ในแง่ของอักขระที่เข้ารหัสได้ นี้จะกระทำโดยทั่วไปผ่านชนิดของ"หลบหนี" กลไก

ภาษามาร์กอัปที่ใช้ SGML ช่วยให้ผู้เขียนเอกสารใช้ลำดับอักขระพิเศษจากช่วง ASCII (จุดโค้ด 128 โค้ดแรกของ Unicode) เพื่อเป็นตัวแทนหรืออ้างอิงอักขระ Unicode ใดๆ ก็ตาม ไม่ว่าอักขระที่แสดงอยู่จะใช้ได้โดยตรงใน การเข้ารหัสของเอกสาร ลำดับพิเศษเหล่านี้มีการอ้างอิงตัวอักษร

การอ้างอิงอักขระที่อิงตาม UCS หรือจุดโค้ด Unicode ของอักขระที่อ้างอิงจะเรียกว่าการอ้างอิงอักขระที่เป็นตัวเลข ใน HTML ที่ 4 และในทุกรุ่นของXHTMLและ XML, จุดรหัสสามารถแสดงไม่ว่าจะเป็นทศนิยม (ฐาน 10) จำนวนหรือเป็นเลขฐานสิบหก (ฐาน 16) จำนวน ไวยากรณ์มีดังนี้:

อักขระ U+0026 ( เครื่องหมาย ) ตามด้วยอักขระ U+0023 ( เครื่องหมายตัวเลข ) ตามด้วยตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  • ทศนิยมตั้งแต่หนึ่งหลักขึ้นไป (U+0030) ถึงเก้า (U+0039) หรือ
  • อักขระ U+0078 ("x") ตามด้วยเลขฐานสิบหกตั้งแต่หนึ่งหลักขึ้นไป ซึ่งเป็นศูนย์ (U+0030) ถึงเก้า (U+0039) อักษรละตินตัวพิมพ์ใหญ่ A (U+0041) ถึง F (U+0046) และอักษรละตินตัวเล็ก a (U+0061) ถึง f (U+0066);

ทั้งหมดตามด้วยอักขระ U+003B ( อัฒภาค ) HTML เวอร์ชันเก่าไม่อนุญาตให้ใช้รูปแบบเลขฐานสิบหก

อักขระที่ประกอบด้วยการอ้างอิงอักขระที่เป็นตัวเลขสามารถแสดงได้ในทุกการเข้ารหัสอักขระที่ใช้ในคอมพิวเตอร์และโทรคมนาคมในปัจจุบัน ดังนั้นจึงไม่มีความเสี่ยงที่การอ้างอิงนั้นจะไม่สามารถเข้ารหัสได้

มีการอ้างอิงอักขระอีกประเภทหนึ่งที่เรียกว่า การอ้างอิงเอนทิตีอักขระซึ่งช่วยให้สามารถอ้างอิงอักขระโดยใช้ชื่อแทนตัวเลขได้ (การตั้งชื่ออักขระจะสร้างเอนทิตีของอักขระ ) HTML กำหนดเอนทิตีของอักขระบางตัว แต่มีไม่มาก อักขระอื่นๆ ทั้งหมดสามารถรวมได้โดยการเข้ารหัสโดยตรงหรือใช้ NCR เท่านั้น

ข้อจำกัด

ชุดอักขระสากลที่กำหนดโดย ISO 10646 คือ "ชุดอักขระในเอกสาร" ของ SGML, HTML 4 ดังนั้นโดยค่าเริ่มต้น อักขระใดๆ ในเอกสารดังกล่าว และอักขระใดๆ ที่อ้างอิงในเอกสารดังกล่าว จะต้องอยู่ใน UCS

แม้ว่าไวยากรณ์ของ SGML ไม่ได้ห้ามการอ้างถึงจุดโค้ดที่ไม่ถูกต้องหรือไม่ได้กำหนดไว้ เช่น&#xFFFF;ภาษามาร์กอัปที่ได้มาจาก SGML เช่น HTML และ XML และมักจะจำกัดการอ้างอิงอักขระที่เป็นตัวเลขไว้เฉพาะจุดโค้ดที่กำหนดให้กับอักขระเท่านั้น

อาจมีการจำกัดด้วยเหตุผลอื่น ตัวอย่างเช่น ใน HTML 4 อนุญาต&#12;ซึ่งเป็นการอ้างอิงถึงอักขระควบคุม "การป้อนแบบฟอร์ม" ที่ไม่พิมพ์ เนื่องจากอนุญาตให้ใช้อักขระป้อนแบบฟอร์ม แต่ใน XML จะใช้อักขระตัวดึงข้อมูลแบบฟอร์มไม่ได้ แม้กระทั่งโดยการอ้างอิง[1] [ ต้องการการอ้างอิง ]อีกตัวอย่างหนึ่ง&#128;ไม่อนุญาตให้ใช้หรืออ้างอิงอักขระควบคุมอื่น ซึ่งเป็นการอ้างอิงถึงอักขระควบคุมอื่นใน HTML หรือ XML แต่เมื่อใช้ใน HTML มักจะไม่ถูกตั้งค่าสถานะว่าเป็นข้อผิดพลาดโดย เว็บเบราว์เซอร์ – บางส่วนตีความว่าเป็นการอ้างอิงถึงอักขระที่แสดงด้วยค่ารหัส 128 ในการเข้ารหัสWindows-1252ด้วยเหตุผลด้านความเข้ากันได้ อักขระนี้ "€" ต้องแสดงเป็น&#8364;ในโค้ด HTML ที่เป็นไปตามมาตรฐาน เป็นตัวอย่างเพิ่มเติม ก่อนเผยแพร่ XML 1.0 Second Edition เมื่อวันที่ 6 ตุลาคม 2000 XML 1.0 อิงตาม ISO 10646 เวอร์ชันเก่า และห้ามใช้อักขระเหนือ U+FFFD ยกเว้นในข้อมูลอักขระ จึงมีการอ้างอิงเช่น&#65536;(U+10000) ผิดกฎหมาย ใน XML 1.1 และ XML 1.0 รุ่นที่ใหม่กว่า การอ้างอิงดังกล่าวได้รับอนุญาต เนื่องจากรายการอักขระที่มีอยู่ได้รับการขยายอย่างชัดเจน

ภาษามาร์กอัปยังวางข้อจำกัดเกี่ยวกับตำแหน่งที่สามารถอ้างอิงอักขระได้

ปัญหาความเข้ากันได้

ในรุ่นเริ่มต้นของSGMLและHTMLอ้างอิงตัวละครที่เป็นตัวเลขที่ถูกตีความในความสัมพันธ์กับการเข้ารหัสอักขระเอกสารมากกว่าUnicodeสำหรับเอกสารสคริปต์ละติน อักขระที่เป็นตัวเลขที่อ้างอิงถึงอักขระระหว่าง x80 และ x9F ในเอกสารเหล่านั้นจะไม่ถูกต้องสำหรับUnicodeและต้องได้รับการบันทึกใหม่ มาตรฐาน HTML ก่อนHTML 4รองรับเฉพาะเอกสารสคริปต์ละตินตะวันตกเท่านั้น: การปฏิบัติต่อการอ้างอิงอักขระที่อยู่เหนือ #7F อาจแตกต่างกันระหว่างแอปพลิเคชันและอนุสัญญาระดับชาติ

ยกตัวอย่างเช่นการดังกล่าวข้างต้นที่ถูกต้องอ้างอิงตัวละครที่เป็นตัวเลขสำหรับการเข้าสู่ระบบยูโร "€" U+20ACเมื่อใช้Unicodeเป็นทศนิยมและเลขฐานสิบหก&#8364; &#x20AC;อย่างไรก็ตาม หากใช้เครื่องมือที่สนับสนุนการใช้งาน HTML ที่ล้าสมัย ข้อมูลอ้างอิง &#128; (การลงชื่อเข้าใช้ยูโรในหน้ารหัสCP-1252 ) หรือ&#164;(การลงชื่อเข้าใช้ยูโรในISO/IEC 8859-15 ) อาจใช้ได้

อีกตัวอย่างหนึ่ง หากข้อความถูกสร้างขึ้นโดยใช้ ชุดอักขระMacRoman เครื่องหมายอัญประกาศคู่ด้านซ้าย "จะแสดงด้วยโค้ดพอยต์ xD2 นี้จะไม่แสดงอย่างถูกต้องในระบบคาดหวังว่าเอกสารเข้ารหัสเป็น UTF-8, ISO 8859-1 หรือ CP-1252 ที่จุดรหัสนี้ถูกครอบครองโดยตัวอักษรÒ การอ้างอิงอักขระตัวเลขที่ถูกต้องสำหรับใน HTML 4 และใหม่กว่าคือ&#x201C;เนื่องจากU+ 201C เป็นโค้ด UCS ในบางระบบอาจมีการอ้างอิงอักขระที่ระบุชื่อ &ldquo;ด้วย

ดูเพิ่มเติม

อ้างอิง

  1. ^ "HTML 5.2: 8. ไวยากรณ์ HTML" . www.w3.org .