יותר

המרת ערך שלם ל- unicode לסימון ב- QGIS


אפשר לעצב שכבה עם מספרים שלמים המאוחסנים בקובץ צורה ולאחר מכן לבחור סמל מתוך פונט.

הייתי רוצה להשתמש במנוע התווית במקום זאת, מכיוון שאני גמיש יותר, למשל אני יכול לסובב את התווית.

האם ניתן לתייג שכבת נקודה עם מספרי Unicode המאוחסנים כמספר שלם בתוך קובץ צורה?


הצלחתי לעשות זאת עם עורך הפונקציות. זה הקוד:

"" "ממיר ערכי מספר שלם מערכי Shapefile לערכי Unicode חשוב: אין ערכים מעל 256 מותר! עבור dkmSSB הגדר שאילתה להיפטר מהערכים מעל 200. ערכים אלה משמשים רק לסימון." "" מאת qgis.core יבוא מ qgis.gui import @qgsfunction (args = 1, group = "Custom") def INTtoUNICODE (ערכים, תכונה, אב): value = values ​​[0] return chr (value)

לאחר מכן בחר פונקציות מותאמות אישית:INTtoUNICODE ("שם שדה")


ניתן לקודד מחרוזות Unicode במחרוזות פשוטות במגוון דרכים, בהתאם לקידוד שתבחר:

אם אתה מוצא את עצמך מתמודד עם טקסט המכיל תווים שאינם ASCII, עליך ללמוד על Unicode-מה זה, איך זה עובד וכיצד Python משתמש בו.

יוניקוד הוא נושא גדול. למרבה המזל, אינך צריך לדעת הכל על יוניקוד בכדי שתוכל לפתור בעזרתו בעיות אמיתיות: מספיק כמה פיסות ידע בסיסיות. ראשית, עליך להבין את ההבדל בין בתים לתווים. בשפות ובסביבות ישנות יותר הממוקדות ASCII, בייטים ותווים מתייחסים לאותו דבר. מכיוון שבייט יכול להכיל עד 256 ערכים, סביבות אלה מוגבלות ל 256 תווים. לעומת זאת, יוניקוד מכיל עשרות אלפי דמויות. המשמעות היא שכל תו Unicode לוקח יותר מבייט אחד, ולכן עליך לבצע את ההבחנה בין תווים לבייטים.

מחרוזות פייתון סטנדרטיות הן ממש מחרוזות בתים, ודמות פייתון היא באמת בת. מונחים אחרים עבור סוג Python הסטנדרטי הם "מחרוזת 8 סיביות" ו"מחרוזת רגילה ". במתכון זה נקרא להם מחרוזות בתים, כדי להזכיר לך את התמצית הבייט שלהן.

לעומת זאת, דמות Python Unicode היא אובייקט מופשט מספיק כדי להכיל את הדמות, מקביל למספרים השלמים הארוכים של פייתון. אינך צריך לדאוג לגבי הייצוג הפנימי הייצוג של דמויות Unicode הופך לבעיה רק ​​כאשר אתה מנסה לשלוח אותם לפונקציה מסוימת בייט, כגון שיטת הכתיבה לקבצים או שיטת השליחה לשקעי רשת. בשלב זה, עליך לבחור כיצד לייצג את התווים כבתים. המרה מ- Unicode למחרוזת בתים נקראת הַצפָּנָה המיתר. באופן דומה, כאשר אתה טוען מחרוזות Unicode מקובץ, שקע או אובייקט אחר המכוון בתים, עליך לְפַעֲנֵחַ המיתרים מביטים לדמויות.

ישנן דרכים רבות להמיר אובייקטים של Unicode למחרוזות בתים, שכל אחת מהן נקראת a הַצפָּנָה . מסיבות היסטוריות, פוליטיות וטכניות מגוונות, אין קידוד "נכון" אחד. לכל קידוד יש שם שאינו רגיש לרשתות, ושם זה מועבר לשיטת הפענוח כפרמטר. להלן כמה שכדאי לדעת עליהם:

ה UTF-8 קידוד יכול להתמודד עם כל תו Unicode. הוא גם תואם לאחור עם ASCII, כך שקובץ ASCII טהור יכול להיחשב גם כקובץ UTF-8, וקובץ UTF-8 שבמקרה משתמש רק בתווי ASCII זהה לקובץ ASCII בעל אותם תווים. מאפיין זה הופך את UTF-8 לתואם מאוד לאחור, במיוחד עם כלי יוניקס ישנים יותר. UTF-8 הוא הרחוק מהקידוד הדומיננטי ב- Unix. החולשה העיקרית היא שהיא לא יעילה למדי לטקסטים המזרחיים.

ה UTF-16 הקידוד מועדף על ידי מערכות ההפעלה של מיקרוסופט וסביבת ה- Java. זה פחות יעיל לשפות המערביות, אך יעיל יותר לשפות המזרחיות. גרסה של UTF-16 ידועה לפעמים בשם UCS-2.

ה ISO-8859 סדרת הקידודים הינם ערכות-על ASCII בת 256 תווים. הם לא יכולים לתמוך בכל התווים של Unicode הם יכולים לתמוך רק בשפה מסוימת או במשפחת שפות מסוימת. ISO-8859-1, הידוע גם בשם לטינית -1 , מכסה את רוב השפות המערב -אירופיות והאפריקאיות, אך לא ערבית. ISO-8859-2, הידוע גם בשם לטינית -2 , מכסה שפות מזרח אירופיות רבות כגון הונגרית ופולנית.

אם אתה רוצה להיות מסוגל לקודד את כל התווים של Unicode, סביר להניח שתרצה להשתמש ב- UTF-8. סביר להניח שתצטרך להתמודד עם הקידודים האחרים רק כאשר ימסרו לך נתונים באותם הקידודים שנוצרו על ידי יישום אחר.


מנקודות קוד מופשטות ועד לביטים בפועל: קידוד UTF-8 ו- UTF-16

נקודת קוד היא מושג מופשט. עבור מתכנת, השאלה היא: כיצד נקודות קוד אלה של Unicode מיוצגות באופן קונקרטי באמצעות סיביות מחשב? התשובה לשאלה זו מובילה ישירות למושג קידוד Unicode. בעיקרון, קידוד Unicode הוא דרך מסוימת ומוגדרת היטב לייצג ערכי נקודת קוד של Unicode בביטים. תקן Unicode מגדיר מספר קידודים, אך החשובים ביותר הם UTF-8 ו- UTF-16, שניהם קידודים באורך משתנה המסוגלים לקודד את כל "התווים" האפשריים של Unicode או, טוב יותר, נקודות קוד. לכן המרות בין שני הקידודים הללו הם ללא הפסד: שום תו Unicode לא יאבד במהלך התהליך.

UTF-8, כפי ששמו מרמז, משתמש ביחידות קוד של 8 סיביות. הוא תוכנן מתוך מחשבה על שני מאפיינים חשובים. ראשית, הוא תואם לאחור עם ASCII המשמעות היא שלכל קוד תו ASCII תקף יש אותו ערך בתים כאשר הוא מקודד באמצעות UTF-8. במילים אחרות, טקסט ASCII תקף הוא טקסט מקודד UTF-8 באופן אוטומטי.

שנית, מכיוון שטקסט Unicode המקודד ב- UTF-8 הוא רק רצף של יחידות בתים של 8 סיביות, אין סיבוך של סיום. קידוד UTF-8 (בניגוד ל- UTF-16) הוא אנטי-אנטי-נייטרלי בעיצובו. זוהי תכונה חשובה בעת החלפת טקסט על פני מערכות מחשוב שונות שיכולות להיות להן ארכיטקטורות חומרה שונות עם סיבולת שונה.

בהתחשב בשני תווי ה- Unicode שהזכרתי קודם, האות הגדולה C (נקודת קוד U+0043) מקודדת ב- UTF-8 באמצעות בתים בודדים 0x43 (43 הקסדצימלי), שהוא בדיוק קוד ASCII המשויך לתו C (לפי תאימות לאחור של UTF-8 עם ASCII). לעומת זאת, האידיאוגרף היפני 学 (נקודת קוד U+5B66) מקודד ב- UTF-8 כרצף של שלושה בתים 0xE5 0xAD 0xA6.

UTF-8 הוא קידוד Unicode הנפוץ ביותר באינטרנט. על פי הנתונים הסטטיסטיים האחרונים של W3Techs הזמינים ב- bit.ly/1UT5EBC, UTF-8 משמשת 87 אחוזים מכלל אתרי האינטרנט שניתחו.

UTF-16 הוא בעצם הקידוד הסטנדרטי בפועל המשמש את ממשקי ה- API המאפשרים Unicode של Windows. UTF-16 הוא קידוד ה- Unicode ה"יליד "גם במערכות תוכנה רבות אחרות. לדוגמה, Qt, Java וספריית Components International for Unicode (ICU), רק כדי להזכיר כמה, השתמשו בקידוד UTF-16 לאחסון מחרוזות Unicode.

UTF-16 משתמש ביחידות קוד של 16 סיביות. בדיוק כמו UTF-8, UTF-16 יכול לקודד את כל נקודות הקוד האוניקודיות האפשריות. עם זאת, בעוד UTF-8 מקודד כל נקודת קוד חוקית של Unicode באמצעות אחת עד ארבע יחידות בתים של 8 סיביות, UTF-16 הוא, באופן מסויים, פשוט יותר. למעשה, נקודות קוד Unicode מקודדות ב- UTF-16 באמצעות יחידת קוד אחת או שתיים של 16 סיביות. עם זאת, בעלות יחידות קוד גדולות מבייט אחד מרמזות על סיבוכי סיום: למעשה, קיימים גם UTF-16 endian big ו- endity UTF-16 קטן (בעוד שיש רק קידוד UTF-8 אנטי-אנדיאני).

יוניקוד מגדיר מושג מישור כקבוצה רציפה של 65,536 (2 16) נקודות קוד. המטוס הראשון מזוהה כמטוס 0 או מטוס רב לשוני בסיסי (BMP). תווים כמעט לכל השפות המודרניות וסמלים רבים ממוקמים ב- BMP, וכל תווי BMP אלה מיוצגים ב- UTF-16 באמצעות יחידת קוד אחת של 16 סיביות.

תווים משלימים ממוקמים במישורים שאינם ה- BMP והם כוללים סמלים פיקטוגרפיים כמו אמוג'י ותסריטים היסטוריים כמו הירוגליפים מצריים. תווים משלימים אלה מחוץ ל- BMP מקודדים ב- UTF-16 באמצעות שתי יחידות קוד של 16 סיביות, הידועות גם כזוגות פונדקאיות.

האות הגדולה C (U+0043) מקודדת ב- UTF-16 כיחידת קוד אחת של 16 סיביות 0x0043. האידיאוגרף 学 (U+5B66) מקודד ב- UTF-16 כיחידת הקוד היחידה של 16 סיביות 0x5B66. עבור תווים רבים ב- Unicode קיימת התכתבות מיידית וישירה בין הייצוג ה"מופשט "של נקודת הקוד שלהם (כגון U+5B66) לבין קידוד ה- UTF-16 הקשור אליהם בהקס (למשל, המילה 0x5B66 16 סיביות).

כדי ליהנות קצת, בואו נסתכל על כמה סמלים פיקטוגרפיים. דמות יוניקוד "איש השלג" (, U+2603) מקודד ב- UTF-8 כרצף שלושה בתים: 0xE2 0x98 0x83 אולם קידוד UTF-16 שלו הוא יחידת 16 סיביות יחידה 0x2603. דמות ה- Unicode "ספל בירה" (, U+1F37A), הממוקם מחוץ ל- BMP, מקודד ב- UTF-8 על ידי רצף ארבעה בתים 0xF0 0x9F 0x8D 0xBA. קידוד UTF-16 שלה משתמש במקום זאת בשתי יחידות קוד של 16 סיביות, 0xD83C 0xDF7A, דוגמה לזוג פונדקאי UTF-16.


ההבדל בין OrdinalEncoder ו- LabelEncoder

עברתי על התיעוד הרשמי של למידת Scikit-learn לאחר שעברתי ספר על ML ונתקלתי בדבר הבא:

בתיעוד ניתן על sklearn.preprocessing.OrdinalEncoder () ואילו בספר ניתן על sklearn.preprocessing.LabelEncoder (), כשבדקתי את הפונקציונליות שלהם זה נראה לי אותו דבר. מישהו יכול בבקשה להסביר לי מה ההבדל בין השניים?

3 תשובות

אתה משתמש בקידוד סדיר כדי לשמור על סדר הנתונים הקטגורי, כלומר קר, חם, חם נמוך, בינוני, גבוה. אתה משתמש בקידוד תוויות או אחד חם לנתונים קטגוריים, כאשר אין סדר בנתונים כלומר כלב, חתול, לוויתן. בדוק את הפוסט הזה במדיום. הוא מסביר היטב את המושגים האלה.

נענה לפני 8 חודשים על ידי פיוטר רוסרוס - להחזיר את מוניקה עם הצבעה אחת

באשר להבדלים ב- OrdinalEncoder ו- LabelEncoder יישום, התשובה המקובלת מזכירה את צורת הנתונים: (OrdinalEncoder לצורת נתונים דו -ממדית (n_samples, n_features), LabelEncoder מיועד לנתוני 1D: for shape (n_samples,))

זו הסיבה ש- OrdinalEncoder יקבל שגיאה:

. אם מנסים להתאים נתונים 1D: OrdinalEncoder (). fit (['a', 'b'])

עם זאת, הבדל נוסף בין המקודדים הוא ה- שם הפרמטר הנלמד שלהם

שימו לב להבדלים בהתאמת LabelEncoder לעומת OrdinalEncoder, ולהבדלים בערכים של פרמטרים נלמדים אלה. LabelEncoder.classes_ הוא 1D, בעוד OrdinalEncoder.categories_ הוא 2D.

מקודדים אחרים שעובדים בדו מימד, כולל OneHotEncoder, משתמשים גם בקטגוריות הנכס_

מידע נוסף כאן על dtype & ltU1 (Little-endian, Unicode, 1 בתים כלומר מחרוזת באורך 1)

בהערות לתשובתי, פיוטר חולק על כך שפיוטר מצביע על ההבדל בין הסדר הַצפָּנָה ותווית הַצפָּנָה יותר כללי.

  • קידוד רגיל טוב עבור משתנים סדירים (כאשר יש משמעות לסדר, כמו קר, חם, חם)
  • לעומת לא-סדיר (aka נָקוּב) משתנה (כאשר הסדר לא משנה, כמו בלונדינית, ברונטית)

זהו מושג נהדר, אך שאלה זו שואלת לגבי שיעורי/יישום sklearn. מעניין לראות כיצד יישום אינו תואם את המושגים במיוחד אם אתה רוצה סדר הַצפָּנָה כפי שמתאר פיוטר (הסדר נשמר) עליך לבצע את הקידוד הסדיר בעצמך (לא OrdinalEncoder ולא LabelEncoder יכולים להסיק סדר).

באשר ליישום נראה של- LabelEncoder ו- OrdinalEncoder יש התנהגות עקבית עד ל מספרים שלמים שנבחרו. הֵם שניהם להקצות מספרים שלמים על סמך סדר אלפביתי. לדוגמה:

שים לב איך שניהם מקודדים שהוקצו מספרים שלמים ב סדר אלפביתי 'c' & lt'h '& lt'w'.

אבל החלק הזה חשוב: שים לב איך לא זה ולא זה מקודד קיבל את סדר & quotreal & quot נכון (כלומר, הסדר האמיתי צריך לשקף את הטמפרטורה, כאשר הסדר הוא "קר" וחם ") המבוסס על סדר & quotreal & quot, הערך" חם "היה מוקצה למספר השלם 1.

בפוסט בבלוג שהזכיר פיוטר, המחבר אפילו לא משתמש ב- OrdinalEncoder (). להשיג קידוד סדיר המחבר עושה זאת באופן ידני: ממפה כל טמפרטורה למספר שלם & quotreal, באמצעות מילון כמו <'cold': 0, 'warm': 1, 'hot': 2>:

עיין בקוד זה באמצעות פנדות, שם ראשית עלינו לעשות זאת הקצה את הסדר האמיתי של המשתנה באמצעות מילון. למרות שזה מאוד פשוט קדימה אבל זה דורש קידוד כדי לספר ערכים סדירים ומהו המיפוי בפועל מטקסט למספר שלם לפי הסדר.

במילים אחרות, אם אתה תוהה אם להשתמש ב- OrdinalEncoder, שים לב ל- OrdinalEncoder ייתכן שלא יספקו למעשה את הקידוד & quotordinal כפי שאתה מצפה!

נענה לפני 8 חודשים על ידי האפונה האדומה עם 5 הצבעות

אפיק, לשניהם אותה פונקציונליות. קצת הבדל הוא הרעיון מאחורי. OrdinalEncoder מיועד להמרת תכונות, בעוד LabelEncoder מיועד להמרת משתנה יעד.

לכן OrdinalEncoder יכול להתאים נתונים בעלי צורה של (n_samples, n_features) ואילו LabelEncoder יכול להתאים רק לנתונים בעלי הצורה של (n_samples,) (אם כי בעבר השתמש ב- LabelEncoder בתוך הלולאה כדי לטפל במה שהפך למשרה של OrdinalEncoder עכשיו)


7 תשובות 7

כפי שאחרים אמרו, השתמש ב- ieee.numeric_std, לעולם לא ieee.std_logic_unsigned, שהיא לא ממש חבילת IEEE.

עם זאת, אם אתה משתמש בכלים עם תמיכה ב- VHDL 2008, תוכל להשתמש בחבילה החדשה ieee.numeric_std_unsigned, מה שבעצם גורם ל std_logic_vector להתנהג כמו לא חתום.

כמו כן, מכיוון שלא ראיתי את זה כתוב במפורש, הנה דוגמת קוד בפועל להמרה ממספר שלם (לא חתום) ל- std_logic_vector:

כפי שאומר LoneTech, השתמש ב- ieee.numeric_std הוא החבר שלך. אתה יכול להמיר std_logic_vector למספר שלם, אבל תצטרך להעביר אותו קודם כל כחתום או לא חתום (מכיוון שלמהדר אין מושג למה אתה מתכוון). VHDL היא שפה בהקלדה חזקה. כתבתי עוד בנושא זה בבלוג שלי

ביסודו של דבר, הייתי משנה את ממיר 7seg שלך כדי לקבל מספר שלם (או בעצם טבעי, בהתחשב בכך שהוא יתמודד רק עם מספרים חיוביים) - ההמרה היא אז חיפוש מערך פשוט. הגדר מערך קבוע עם ההמרות ורק אינדקס לתוכו עם המספר השלם שבו אתה משתמש בישות כקלט.

כפי שהתשובה העיקרית אומרת, השיטה המומלצת היא כדלקמן:

עם זאת, ברצוני לפרט מדוע זה מומלץ ומדוע יש ל- VHDL דרך כל כך מפותלת להמיר מספרים שלמים ל- std_logic_vectors.

זה מסתכם בהסתכלות של סוגים אלה על ידי הכלים.

וקטור standard_logic הוא ממש חבורה של 1s או 0s. יש לי 10001. איזה מספר זה? ובכן, זה תלוי. האם זה חתום או לא חתום? ה- SLV הזה לא יודע ולא אכפת לו. כמה סיביות? ובכן, כמה זמן SLV שלך?

מספר שלם חתום, ובדרך כלל 32 סיביות (אם אני זוכר נכון).

שלב 1: הפוך את המספר השלם שלי קצר יותר וללא חתימה. זה החלק הזה:

"יש לי את המספר השלם הזה, אני רוצה שהוא לא יהיה חתום, ואני רוצה שהוא יתאים לאורכו של ה- SLV שלי."

שלב 2: לאחר מכן, קח את החלקים האלה והשתמש בהם להנעת ה- my_slv.

"קח את החלקים האלה והשתמש בהם להנעת ה- SLV שלי"

(הערה על טרמינולוגיה. A & lt = B ב- VHDL נקראת בקול רם כ- "A מונע על ידי B")

כשמגיעים מרקע תכנות מסורתי, קל מאוד להיתקע באופן חשיבה תכנותי. אבל ב- VHDL לקוד שאתה כותב יש השלכות פיזיות בחומרה. הידיעה מדוע שיטה זו עובדת ומומלצת היא צעד אחד קרוב יותר לחשוב על מה שאתה כותב במונחי חומרה.

טיפ בונוס: פונקציות המקודמות ל- to_ הן פונקציות המקצרות/משנות את האופרנדים. הם הופכים אותם ללא חתומים או באורך מסוים או שניהם. זו הסיבה מדוע to_unsigned דורש ממך לציין את האורך. הפונקציות ללא to_ (straight std_logic_vector (.) בדוגמה זו) משמשות כאשר סוגים כבר תואמים ישירות. "קח את החלקים האלה ודחף אותם מסוג זה, ללא צורך בשינויים". לאלה אין ויכוח אורך מכיוון ששני הצדדים כבר זהים. אז כשאתה בונה דברים כאלה, אני לא צריך לחפש את זה, אני רק חושב איך אני משנה את הנתונים.


4 השדות

כעת אנו נותנים שתי רישומים של השדות במאגר הנתונים של Unihan. הראשון הוא רישום אלפביתי, עם מידע על תוכן השדה ותחבירו. השני הוא רישום של השדות לפי פרסום תקן Unicode בו הם נמצאו לראשונה.

4.1 רישום אלפביתי

עבור כל שדה אנו נותנים את המידע הבא ברישום האלפביתי: שלו תכונה tag, Unicode שלה סטָטוּס, שלה קטגוריה כפי שהוגדר לעיל, גרסת ה- Unicode שבה היא הייתה הציג, שלה תוחם, שלה תחביר, וזה שלו תיאור.

ה תכונה name הוא התג המשמש במסד הנתונים של Unihan לסימון מופעים של שדה זה.

ה- Unicode סטָטוּס הוא או נורמטיבי, אִינפוֹרמָטִיבִי, או זְמַנִי, תלוי אם הוא חלק נורמטיבי מהתקן, חלק אינפורמטיבי מהתקן, או אף אחד מהם. אנו עשויים לכלול גם הוצא משימוש כסטטוס Unicode אם אין עוד שימוש בשדה.

לשדות המאפשרים ערכים מרובים יש תוחם מוגדר כ"מרחב ". שדות שאין להם ערכים מרובים (כגון שדות המקור של IRG) מוגדרים כ- "לא תקף". בחלק מהשדות אין כרגע ערכים רבים בנתונים אך עשויים לעשות זאת בעתיד.

עבור רוב השדות עם מספר ערכים, סדר הערכים הוא שרירותי ואין לו משמעות מיוחדת. הסדר הנפוץ ביותר במקרים כאלה הוא אלפביתי. לדוגמה, עיין בשדה kCantonese.

עם זאת, עבור שדות מסוימים סדר הערכים עשוי להיות משמעותי במקרים כאלה, המשמעות מצוינת בתיאור עבור השדה. לדוגמה, עיין בשדה kMandarin. בגרסאות מאוחרות יותר של מסד הנתונים של Unicode Character, שדה עשוי להשתנות מסדר שרירותי לסדר שצוין.

האימות מתבצע כדלקמן: הערך מחולק למשרדי משנה באמצעות תוחם (אם מוגדר), וכל אחד משנה שהומר לטופס נורמליזציה D (NFD). הערך תקף אם ורק אם כל ערך משנה מנורמל תואם לזה של השדה תחביר הבעה רגילה. שים לב שהערך עבור כל שדה נתון תחביר לא מובטח שהוא יציב ועשוי להשתנות בעתיד.

סוף - סוף, ה תיאור מכיל לא רק תיאור של מה השדה מכיל, אלא גם מידע מקור, מגבלות ידועות, מתודולוגיה המשמשת להפקת הנתונים וכו '.

מספרים חשבונאיים משמשים במזרח אסיה למניעת הונאה. מכיוון שמספר כמו עשר (十) הופך בקלות לאלף (千) במכה של מברשת, מסמכים כספיים לרוב ישתמשו בצורה חשבונאית של הספרה עשר (כגון 拾) במקומם.

ניתן למצוא תיאור מלא של jyutping בכתובת https://en.wikipedia.org/wiki/Jyutping. ההבדלים העיקריים בין jyutping לרומניזציה של ייל ששימשו בעבר הם:

1) Jyutping תמיד משתמש במספרי צלילים ואינו מבחין בצלילי הנפילה והרמה הגבוהים.
2) Jyutping תמיד כותב א 'ארוך כמו "aa".
3) Jyutping משתמש ב- "oe" ו- "eo" עבור התנועה "eu" של ייל.
4) Jyutping משתמש ב- "c" במקום ב- "ch", "z" במקום "j" ו- "j" במקום "y" כראשי תיבות.
5) ראשי תיבות שאינו בטל תמיד כתוב במפורש (ובכך "ג'וט" בג'יאוטפינג במקום "יוט" של ייל).

הגיינות קנטונזיות ממוינות לפי סדר אלפביתי, לא לפי סדר התדירות.

נ.ב., הדיאלקט ההונג קונגי של הקנטונזית נמצא בתהליכי הורדת NG- ראשוני לפני גמר לא מבוטל. כל מילה עם NG-ראשוני יכולה למעשה להיות מבוטאת בלעדיה, בהתאם לדובר ולנסיבות. מילים רבות עם ראשוני null עשויות להופיע באופן דומה עם NG- ראשוני. באופן דומה, דוברים רבים משתמשים ב- L- ראשוני למילים שנאמרו בעבר עם N- ראשוני.

הנתונים הקנטונזים נגזרים מהמקורות הבאים:

קייסי, ג'ו יו, ס"ג. עשרת אלפים דמויות: מילון אנליטי. הונג קונג: קלי וולש, 1980 (kPhonetic).

צ'אונג קוואן-הין ורוברט ס. באואר, ייצוג הקנטונזית עם דמויות סיניות, כתב העת ללימודי סיני מונוגרפיה סינית מספר 18, 2002.

רוי טי קאולס, מילון כיס לקנטונזית, הונג קונג: הוצאת האוניברסיטה, 1999 (kCowles).

סידני לאו, מילון קנטונזי-אנגלי מעשי, הונג קונג: מדפסת ממשלתית, 1977 (kLau).

ברנרד פ. מאייר ותיאודור פ. וומפה, מילון קנטונזי-אנגלי של סטודנט, מריקונול, ניו יורק: אגודת שליחות החוץ הקתולית של אמריקה, 1947 (kMeyerWempe).

饒 秉 才, עורך.廣州 音 字典, הונג קונג: Joint Publishing (H.K.) Co., Ltd., 1989.

黃 港 生, עורך.商務 新 詞典, הונג קונג: העיתונות המסחרית, 1991.

לפיכך, "1187.060" מציין את התו השישי בעמוד 1187. לתו שאינו נמצא במילון זה אך מוקצה מיקום בין התווים השישים והשביעיים בעמוד 1187 למטרות מיון יהיה הקוד "1187.061"

הגדרות ספציפיות לשפות לא סיניות או ניבים סיניים שאינן מנדרינית מודרנית מסומנות, למשל (Cant) או (J).

הנתונים כאן מורכבים ממספר עשרוני ואחריו אות A עד K, האות P או כוכבית. המספר העשרוני נותן את המספר Soothill לפונטי של הדמות, והאות היא אינדיקציה לתדר גס, כאשר A מציין את 500 האידיאוגרפים השכיחים ביותר, B את חמש מאות הקרובות וכן הלאה.

P משמש את פן לציון תו נדיר הכלול במילון רק מכיוון שהוא היסוד הפונטי בדמויות אחרות.

כוכבית משמשת במקום אות במיקום הסופי כדי להצביע על דמות השייכת לאחת הקבוצות הפונטיות של סות'יל אך אינה מצויה במילון של פן.

מערכת ארבע הפינות מקצה לכל תו קוד בן ארבע ספרות מ -0 עד 9. הספרה נגזרת מ"צורה "של ארבע פינות הדמות (שמאל למעלה, ימין למעלה, שמאל תחתון, תחתון מימין) ). ניתן להשתמש בספרה חמישית אופציונלית להבחנה נוספת של התווים שהספרה החמישית נגזרת מהצורה במרכז או באיזור הדמות מיד משמאל לפינה הרביעית.

מערכת ארבע הפינות משמשת כיום רק לעיתים רחוקות. תיאורים מלאים זמינים באינטרנט, למשל, בכתובת http://en.wikipedia.org/wiki/Four_corner_input.

מערך זה מכיל 7,405 רשומות. הפניות ניתנות בצורה DDDDa ('), כאשר "DDDD" הוא מספר קבוע בטווח [0001..1260] מרופד אפס עד 4 ספרות, "a" הוא אות בטווח [a..z ] (לא כולל "w"), ואחריו אפוסטרופה ('). הנתונים שמהם מופקת טבלת המיפוי מכילה סך של 10,023 הפניות. הפניות לצורות כתובת הושמטו.

שינויים מאז המהדורה הראשונית:
נוסף: [U+25053]: 0995 מ '(2009-01-01)
נוסף: [U+65d6]: 0001l '(2008-11-17).

22 בדצמבר 2003: פרסום ראשוני. 32 ההפניות הבאות הן לטפסים לא מקודדים: 0059k, 0069y, 0079d, 0275b, 0286a, 0289a, 0289f, 0293a, 0325a, 0389o, 0391h, 0392s, 0468h, 0480a, 0516a, 0526o, 0566g ', 0642i, 0661a, 0739a 0775b, 0837h, 0893r, 0969a, 0969e, 1019e, 1062b, 1112d, 1124l, 1129c ', 1144a, 1144b. במקרים מסוימים הוחלף מיפוי וריאציה בטבלת המיפוי, במקרים אחרים ההשמעה מושמטת.

Karlgren, Klas Bernhard Johannes 高 本 漢 (1889–1978): 2000. Grammata Serica Recensa Electronica. גרסה אלקטרונית של GSR, כולל מדדים, קנון הברות ותמונות של הטקסט המקורי של Karlgren (1957). מוכן לפרויקט STEDT http://stedt.berkeley.edu/ על ידי ריצ'רד קוק המבוסס בחלקו על עבודותיהם של טור אולווינג ופרנץ טפרנר (ראה להלן), בשימוש באישור. ברקלי: אוניברסיטת קליפורניה.

Karlgren 1957. Grammata Serica Recensa. פורסם לראשונה בעלון המוזיאון לעתיקות במזרח הרחוק (BMFEA) מס '29, שטוקהולם, שבדיה. הודפס מחדש על ידי Elanders Boktrycker Aktiebolag, Kungsbacka, [1972]. הודפס מחדש גם על ידי SMC Publishing Inc., טייפה, טייוואן, ROC, [1996]. ISBN: 957-638-269-6.

Karlgren 1940. Grammata Serica: Script and Phonetics בסינית ובסינית-יפנית 《中 日 漢字 形 聲 論》 Zhong-Ri Hanzi Xingsheng Lun [מחקר על סימנים מורכבים-פונטיים סיניים-יפניים:] BMFEA מס '12. הודפס מחדש, טייפה : חברת הוצאת צ'נג-ון, [1966].

הפניות התווים ניתנות בצורה "ABCDE.XYZ", שבה: "A" הוא מספר עוצמת הקול [1..8] "BCDE" הוא מספר העמוד מרופד אפס [0001..4809] "XY" הוא המספר מרופד אפס של התו בדף [01..32] "Z" הוא "0" עבור תו בפועל במילון, וגדול מ -0 עבור תו שהוקצה למיקום "וירטואלי" במילון. לדוגמה, 53024.060 מציין תו HDZ בפועל, התו השישי בעמוד 3,024 של כרך 5 (כלומר 籉 [U+7C49]). שים לב כי הפניות 8 "BCDE" של כרך 8 נמצאות בטווח [0008..0044] כולל, בהתייחסו לדף של "נספח התוספת" בסוף הכרך הזה (החל לאחר עמ '5746).

לתו הראשון המוקצה למיקום וירטואלי נתון יש אינדקס שמסתיים ב- 1 לשני המוקצה לאותה מיקום וירטואלי יש אינדקס שמסתיים ב- 2 וכן הלאה.

מערך נתונים זה מכיל בסך הכל 56098 הפניות HDZ, מתוכם 54729 הפניות של תווים HDZ בפועל (ניתנות מיקומים עבור כל ערכי ראש HDZ, כולל איחוד מקורות-פנימיים), ו -1369 מהם עמדות תווים וירטואליות (ראה הערה להלן).

סך של 55818 תווים ייחודיים של Unihan מוקצים מיפויים בנתונים אלה. בגלל איחוד מקורות-פנימיים של IRG, לדמות נתונה עשויה להיות יותר מפניה HDZ אחת. איחודים מקור-פנימיים הינם משני סוגים: (1) איחודים של גרסאות גרפיות (2) איחודים של רשומות ראש כפולות.

ההגהה של כל ההפניות נעשתה בעיקר על בסיס בדיקות צולבות של שלוש גרסאות של נתוני ההתייחסות: (1) מקור ההדפסה המקורי (2) השדה "kIRGHanyuDaZidian" של מסד הנתונים של Unihan (מהדורה 3.1.1d1) (3 ) "HDZ.txt", הופק במקור והוכח עבור המכון הטכנולוגי למידע של Academia Sinica (מעבדת עיבוד מסמכים). בנוסף, הנתונים נבדקו מול השדות "kHanYu" ו- "kAlternateHanYu" של מסד הנתונים של Unihan (מהדורה 3.1.1d1), שהערכה של הנתונים הנוכחיים מחליפה.

ערך המחרוזת, אורך המחרוזת, מפתח מורכב, ספירת שדות ואימות כולל של דפים בוצעו כולם. בסך הכל זוהו/ תוקנו 578 מחדלים/ טעויות במקור (2). כל השגיאות הנותרות יתייחסו ככל הנראה למיקומים וירטואליים או לסדר התווים בפועל בתוך דף נתון. אין זה סביר שנשארות טעויות בכל מעברי הדף. איחודים אפשריים עתידיים של איחוד מקורות-פנימיים יחייבו עדכון של USV עבור כמה הפניות. בשום פנים ואופן אין להסיר את המיפויים של מקור האיחוד הפנימי (כפול USV) ממערך הנתונים הזה.

הערה: מקור (3) תרם רק הפניות של תווים HDZ בפועל לתהליך ההגהה, בעוד שמקור (2) תרם את כל העמדות הווירטואליות. נראה כי מהדרי המקור (2) מקצים בדרך כלל עמדות וירטואליות המבוססות על ספירת שבץ, אם כי מדי פעם המיקום הווירטואלי מפגיש את הדמות הווירטואלית עם תו ה- HDZ בפועל שהוא גרסה, ללא התחשבות בספירת שבץ בפועל.

-מידע ביבליוגרפי למקור ההדפסה-

& ltHanyu Da Zidian & gt ['מילון הדמויות הסיני הגדול' (ב -8 כרכים)]. XU Zhongshu (עורך ראשי). ווהאן, מחוז הוביי (PRC): הוביי וסצ'ואן הוצאה לאור קולקטיבים, 1986-1990. ISBN: 7-5403-0030-2/H.16.

מערך זה מכיל 3799 רשומות. (הנתונים המקוריים שנמסרו ליוניאן 2003/02/04 הכילו סך של 3800 רשומות, כולל 〇 [U+3007] לינג 'מספר IDEOGRAPHIC ZERO', לא נכלל ב- Unihan מכיוון שהוא אינו CJK IDEOGRAPH UNIFIED.)

כל ערך מורכב משני פיסות נתונים.

ההגייה של Hanyu Pinyin (HYPY) של הדמות.

מיד לאחר ההגייה, מחרוזת מספרית מופיעה בסוגריים: למשל ב- "ā (392)" המחרוזת המספרית "392" מציינת את סך כל תדרי ההגייה של הדמות כפי שניתן ב HYPLCD.

היכן שקיימת יותר מהגייה אחת, אלה ממוינים לפי תדירות יורדת, ורכיבי הרשימה תוחמים "שטח".

נתוני XDHYPLCD כאן לסינית סטנדרטית מודרנית (Putonghua) חוצים ארבעה ז'אנרים ("חדשות", "מדעיות", "דיבור" ו"ספרות "), ונגזרים מקורפוס של 1,807,389 תווים. עיין בטקסט זה למידע נוסף.

8548 הערכים (8586 עם כתבים וריאנטיים) מעמ. 491-656 מתוך XDHYPLCD הוקלטו בעבודת יד וקראו הוכחות משנת 1994/08/04 עד 1995/03/22 על ידי ריצ'רד קוק.

תאריך הפרסום הנוכחי לעיל משקף את תאריך ההגהה האחרון.

תמלול HYPY לנתונים במהדורה זו היה אוטומטי למחצה ותיקון ביד בשנת 1995, מבוסס בין השאר על נתונים שסיפק רוס פטרסון (המחלקה למחשוב, אימפריאל קולג 'בלונדון).

טום בישוף http://www.wenlin.com מודה גם הוא על הסיוע המוקדם בקריאת נתונים אלה.

מערך התווים המשמש לדיגיטציה זו של HYPLCD (טקסט "פשוטה" של היבשת PRC) היה (Mac OS 7-9) GB 2312-80 (בתוספת 嗐).

נתונים אלה הומרו ל- Big5 (פלוס 腈), וגם גרסאות GB ו- Big5 הומרו בנפרד ל- Unicode 4.0, ולאחר מכן התמזגו, וכתוצאה מכך 3800 הרשומות במהדורה המקורית. נתוני תדרים למילים פוליסילביות פשוטות הופעלו ליצירת תדרי תווים פשוטים ומסורתיים כאחד.

מידע ביבליוגרפי למקור ההדפסה העיקרי

| U+34CE |㓎 | 10297.260: קין, קין, קין |
| U+34D8 |㓘 | 10278.080,10278.090: sù |
| U+5364 |卤 | 10093.130: xī, lǔ 74609.020: lǔ, xī |
| U+5EFE |廾 | 10513.110,10514.010,10514.020: gǒng |

לדוגמה, ערך "kHanyuPinyin" עבור 卤 U+5364 הוא "10093.130: xī, lǔ 74609.020: lǔ, xī". משמעות הדבר היא כי 卤 U+5364 נמצא ב- "kHanYu" בכניסות 10093.130 ו- 74609.020. הערך הראשון כולל את שתי הקריאות pīnyīn xī ו- lǔ (בסדר זה), ואילו לערך השני יש את הקריאות lǔ ו- xī (הפיכת הסדר).

נתונים אלה נוספו במקור על ידי 井 作 恆 Jǐng Zuòhéng, הוכח על ידי 聃 媽 歌 Dān Māgē (מגדה דנית, באמצעות תוכנה שנתרמה על ידי Institute Wénlín Institute, Inc וטבלאות שהוכנו על ידי 曲 理 查 Qū Lǐchá), והוכחו שוב והוכנו עבור קונסורציום Unicode מאת 曲 理 查 Qū Lǐchá (2008-01-14).

לפיכך, "1187.060" מציין את התו השישי בעמוד 1187. לתו שאינו נמצא במילון זה אך מוקצה מיקום בין התווים השישים והשביעיים בעמוד 1187 למטרות מיון יהיה הקוד "1187.061"

שדה זה מייצג את המיקום הרשמי של הדמות בתוך מילון Dae Jaweon כפי שהוא משמש את ה- IRG באלגוריתם המיון של ארבעת המילונים.

לפיכך, "32264.080" מציין את התו השמיני בעמוד 2264 בכרך 3. לתו שאינו במילון זה אך מוקצה מיקום בין התווים השמיניים וה -9 בדף זה לצורכי מיון יהיה הקוד "32264.081"

שדה זה מייצג את המיקום הרשמי של הדמות בתוך מילון האניו דה זידיאן כפי שהוא משמש את ה- IRG באלגוריתם המיון של ארבעת המילונים.

לפיכך, "1187.060" מציין את התו השישי בעמוד 1187. תו שאינו נמצא במילון זה אך מוקצה מיקום בין התווים השישים והשביעיים בעמוד 1187 למטרות מיון יהיה בעל הקוד "1187.061".

K0 KS X 1001: 2004 (לשעבר KS C 5601-1987)
K1 KS X 1002: 2001 (לשעבר KS C 5657-1991)
K2 KS X 1027-1: 2011 (לשעבר PKS C 5700-1 1994)
K3 KS X 1027-2: 2011 (לשעבר PKS C 5700-2 1994)
K4 KS X 1027-3: 2011 (לשעבר PKS 5700-3: 1998)
K5 KS X 1027-4:2011 (formerly Korean IRG Hanja Character Set 5th Edition: 2001)
KC Korean History On-Line (한국 역사 정보 통합 시스템)

T1 TCA-CNS 11643-1992 1st plane
T2 TCA-CNS 11643-1992 2nd plane
T3 TCA-CNS 11643-1992 3rd plane with some additional characters
T4 TCA-CNS 11643-1992 4th plane
T5 TCA-CNS 11643-1992 5th plane
T6 TCA-CNS 11643-1992 6th plane
T7 TCA-CNS 11643-1992 7th plane
TB TCA-CNS Ministry of Education, Hakka dialect, May 2007
TC TCA-CNS 11643-1992 12th plane
TD TCA-CNS 11643-1992 13th plane
TE TCA-CNS 11643-1992 14th plane
TF TCA-CNS 11643-1992 15th plane

Published by Japan's Ministry of Justice (法務省) in 2010 and amended in 2015 and 2017 with one additional ideograph during each year, Jinmei-yō Kanji (人名用漢字) includes 863 ideographs for use in personal names in Japan.

Published by Japan's Agency for Cultural Affairs (文化庁) in 2010, Jōyō Kanji (常用漢字) includes 2,136 ideographs for common use in Japan.

Thus, “1187.060” indicates the sixth character on page 1187. A character not in this dictionary but assigned a position between the 6th and 7th characters on page 1187 for sorting purposes would have the code “1187.061”.

The Supreme Court of Korea published a large list of ideographs for use in personal names, and this property corresponds to an 1,800-ideograph subset that is separate from those intended only for use in personal names and covered by the kKoreanName property.

The Supreme Court of Korea published this list of ideographs, and this property excludes 1,800 ideographs that represent a subset that the kKoreanEducationHanja property covers.

1) C or V. “C” indicates that the Unicode code point maps directly to the Adobe-Japan1-6 CID that appears after it, and “V” indicates that it is considered a variant form, and thus not directly encoded.

This field is also used for additional radical-stroke indices where either a character may be reasonably classified under more than one radical, or alternate stroke count algorithms may provide different stroke counts.

The 25334 character references are given in the form “ABC.XY”, in which: “ABC” is the zero-padded page number [004..546] “XY” is the zero-padded number of the character on the page [01..73]. For example, 364.38 indicates the 38th character on Page 364 (i.e. 澍). Where a given Unicode Scalar Value (USV) has more than one reference, these are space-delimited.

-- Release information (20080814) --

This release corrects several mappings. This data set now contains a total of 25334 references, for 19583 different hanzi.

-- Release information (20031005) --

This release corrects several mappings.

-- Release information (20020310) --

This data set contains a total of 25334 references, for 19572 different hanzi (up from 25330 and 19511 in the previous release).

This release of the kSBGY data fixes a number of mappings, based on extensive work done since the initial release (compare the initial release counts given below). See the end of this header for additional information.

-- Initial release information (20020310) --

The original data was input under the direction of Prof. LUO Fengzhu at Taiwan Taoyuanxian Yuan Zhi University (see below) using an early version of the Big5- based CDP encoding scheme developed at Academia Sinica. During 2000-2002 this raw data was processed and revised by Richard Cook as follows: the data was converted to Unicode encoding using his revised kHanYu mapping tables (first provided to the Unicode Consortium for the the Unihan database release 3.1.1d1) and also using several other mapping tables developed specifically for this project the kSBGY indices were generated based on hand-counts of all page totals numerous indexing errors were corrected and the data underwent final proofing.

The SBGY text, which dates to the beginning of the Song Dynasty (c. 1008, edited by 陳彭年 CHEN Pengnian et al.) is an enlargement of an earlier text known as 《切韻》 Qie Yun (dated to c. 601, edited by 陸法言 LU Fayan). With 25,330 head entries, this large early lexicon is important in part for the information which it provides for historical Chinese phonology. The GY dictionary employs a Chinese transcription method (known as 反切) to give pronunciations for each of its head entries. In addition, each syllable is also given a brief gloss.

It must be emphasized that the mapping of a particular SBGY glyph to a single USV may in some cases be merely an approximation or may have required the choice of a “best possible glyph” (out of those available in the Unicode repertoire). This indexing data in conjunction with the print sources will be useful for evaluating the degree of distinctive variation in the character forms appearing in this text, and future proofing of this data may reveal additional Chinese glyphs for IRG encoding.

-- Bibliographic information on the print sources --

《宋本廣韻》 <<Song Ben Guang Yun>> [‘Song Dynasty edition of the Guang Yun Rhyming Dictionary’], edited by 陳彭年 CHEN Pengnian et al. (c. 1008).

Two modern editions of this work were consulted in building the kSBGY indices:

《新校正切宋本廣韻》。台灣黎明文化事業公司 出版,林尹校訂1976 年出版。[This was the edition used by Prof. LUO (台灣桃園縣元智大學中語系羅鳳珠), and in the subsequent revision, conversion, indexing and proofing.]

《新校互註‧宋本廣韻》。香港中文大學,余迺永 1993, 2000 年出版。ISBN: 962-201-413-5 7-5326-0685-6. [Textual problems were resolved on the basis of this extensively annotated modern edition of the text.]

For further information on this index data and the databases from which it is excerpted, see:

The basic syntax is a Unicode scalar value. It may optionally be followed by additional data. The additional data is separated from the Unicode scalar value by a less-than sign (<), and may be subdivided itself into substrings by commas, each of which may be divided into two pieces by a colon. The additional data consists of a series of field tags for another field in the Unihan database indicating the source of the information. If subdivided, the final piece is a string consisting of the letters T (for tòng, U+540C 同) B (for bù, U+4E0D 不), Z (for zhèng, U+6B63 正), F (for fán, U+7E41 繁), or J (for jiǎn U+7C21 簡/U+7B80 简).

T is used if the indicated source explicitly indicates the two are the same (e.g., by saying that the one character is “the same as” the other).

B is used if the source explicitly indicates that the two are used improperly one for the other.

Z is used if the source explicitly indicates that the given character is the preferred form. Thus, kHanYu indicates that U+5231 刱 and U+5275 創 are semantic variants and that U+5275 創 is the preferred form.

F is used if the source explicitly indicates that the given character is the traditional form.

J is used if the source explicitly indicates that the given character is the simplified form.

Published by the Chinese government in 2013, this list includes 8,105 ideographs in three levels containing 3,500 (index numbers 1 through 3500), 3,000 (3501 through 6500), and 1,605 (6501 through 8105) ideographs, respectively. Ideographs for more general use are in the first two levels, with those in the first level being more frequently used. The ideographs in the third level are used for personal names, place names, and for science and technology.

The preferred value is the one most commonly associated with the character in modern text using customary fonts.

Each pīnyīn reading is preceded by the character’s location(s) in the dictionary, separated from the reading by “:” (colon) multiple locations for a given reading are separated by “,” (comma) multiple “location: reading” values are separated by “ ” (space). Each location reference is of the form /[0-9]<4>.[0-9]<3>*?/ . The number preceding the period is the page number, zero-padded to four digits. The first two digits of the number following the period are the entry’s position on the page, zero-padded. The third digit is 0 for a main entry and greater than 0 for a parenthesized variant of the main entry. A trailing “*” (asterisk) on the location indicates an encoded variant substituted for an unencoded character (see below).

《现代汉语词典》 [Xiàndài Hànyǔ Cídiǎn = XHC ‘Modern Chinese Dictionary’]. 中国社会科学院语言研究所词典编辑室编 [Chinese Academy of Social Sciences, Linguisitics Research Institute, Dictionary Editorial Office, eds.]. 北京: 商务印书馆, 1983 [1978 年 12 月第 1 版 1983 年 1 月第 2 版 1984 年 1 月北京第 49 次印刷印张 54 统一书号: 17017.91].

Note that there are subsequent editions of this important PRC dictionary, reflecting later developments and refinements in language and orthographic standardization, and other editions should not be used in future revision of this field.

The Unihan version of this data was originally prepared by Richard Cook (initial release 2007-12-12), proofing and revising a subset of data contributed by Dr. George Bell (who input it with the help of Joy Zhao Rouzer, Steve Mann, et al., as one part of their “Quick and Easy Index of Chinese Characters with Attributes” Bell 1995-2005).

Distinct Unihan hànzì: 10,992
Distinct hànzì: 11,190
Distinct pīnyīn syllable types: 1,337

As of the present writing (Unicode 5.1), the XHC source data contains 204 unencoded characters (198 of which were represented by PUA or CJK Compatibility [or in one case, by non-CJK, see below] characters), for the most part simplified variants. Each of these 198 characters in the source is replaced by one or more encoded variants (references in all 204 cases are marked with a trailing “*” see above). Many of these unencoded forms are already in the pipeline for future encoding, and future revisions of this data will eliminate trailing asterisks from mappings.

The print source and data also include a lexical entry

〇 U+3007 : “0719.100: líng” (IDEOGRAPHIC NUMBER ZERO)

4.2 Listing by Date of Addition to the Unicode Standard

The table below lists the fields of the Unihan database by the release where they were first added. Also included are fields which were dropped in a particular release. These are indicated by italics.

Unicode Version Fields Added or Dropped
11.0.0 kJinmeiyoKanji, kJoyoKanji, kKoreanEducationHanja, kKoreanName, kTGH
8.0.0 kJa
5.2 kHanyuPinyin, kIRG_MSource
5.1 kXHC1983
5.0 kCheungBauer, kCheungBauerIndex, kFourCornerCode, kHangul
4.1 kAlternateKangXi (dropped), kAlternateMorohashi (dropped), kFennIndex, kIICore, kRSAdobe_Japan1_6
4.0.1 kGSR, kHanyuPinlu, kIRG_USource
3.2 kAccountingNumeric, kAlternateHanYu (dropped), kCihaiT, kCompatibilityVariant, kFrequency, kGradeLevel, kOtherNumeric, kPrimaryNumeric, kSBGY
3.1.1 kCangjie, kCowles, kFenn, kHKGlyph, kHKSCS, kIRG_KPSource, kJIS0213, kKPS0, kKPS1, kKarlgren, kLau, kVietnamese
3.1 kAlternateJEF (dropped), kIRG_HSource, kMeyerWempe, kPhonetic, kRSMerged (dropped), kTotalStrokes
3 kAlternateJEF, kIRGDaeJaweon, kIRGDaiKanwaZiten, kIRGHanyuDaZidian, kIRGKangXi, kIRG_GSource, kIRG_JSource, kIRG_KSource, kIRG_TSource, kIRG_VSource, kRSMerged, kSemanticVariant (reintroduced), kSpecializedSemanticVariant (reintroduced)
2.1 kSemanticVariant (dropped), kSpecializedSemanticVariant (dropped)
2.0 kAlternateHanYu, kAlternateKangXi, kAlternateMorohashi, kCNS1992, kCantonese, kDaeJaweon, kDefinition, kHanYu, kJapaneseKun, kJapaneseOn, kKangXi, kKorean, kMainlandTelegraph, kMandarin, kMatthews, kMorohashi, kNelson, kRSJapanese, kRSKanWa, kRSKangXi, kRSKorean, kRSUnicode, kSemanticVariant , kSimplifiedVariant, kSpecializedSemanticVariant, kTaiwanTelegraph, kTang, kTraditionalVariant, kZVariant

The remaining fields were added prior to Unicode 2.0.

4.3 Listing by Location within Unihan.zip

The table below lists the fields of the Unihan database. They are organized into groups according to the file within Unihan.zip where their values are found. Each field name also links to its description.

קוֹבֶץ Fields within file
Unihan_DictionaryIndices.txt kCheungBauerIndex, kCowles, kDaeJaweon, kFennIndex, kGSR, kHanYu, kIRGDaeJaweon, kIRGDaiKanwaZiten, kIRGHanyuDaZidian, kIRGKangXi, kKangXi, kKarlgren, kLau, kMatthews, kMeyerWempe, kMorohashi, kNelson, kSBGY
Unihan_DictionaryLikeData.txt kCangjie, kCheungBauer, kCihaiT, kFenn, kFourCornerCode, kFrequency, kGradeLevel, kHDZRadBreak, kHKGlyph, kPhonetic, kTotalStrokes
Unihan_IRGSources.txt kCompatibilityVariant, kIICore, kIRG_GSource, kIRG_HSource, kIRG_JSource, kIRG_KPSource, kIRG_KSource, kIRG_TSource, kIRG_USource, kIRG_VSource, kIRG_MSource, kRSUnicode
Unihan_NumericValues.txt kAccountingNumeric, kOtherNumeric, kPrimaryNumeric
Unihan_OtherMappings.txt kBigFive, kCCCII, kCNS1986, kCNS1992, kEACC, kGB0, kGB1, kGB3, kGB5, kGB7, kGB8, kHKSCS, kIBMJapan, kJa, kJinmeiyoKanji, kJis0, kJis1, kJIS0213, kJoyoKanji, kKoreanEducationHanja, kKoreanName, kKPS0, kKPS1, kKSC0, kKSC1, kMainlandTelegraph, kPseudoGB1, kTaiwanTelegraph, kTGH, kXerox
Unihan_RadicalStrokeCounts.txt kRSAdobe_Japan1_6, kRSJapanese, kRSKangXi, kRSKanWa, kRSKorean
Unihan_Readings.txt kCantonese, kDefinition, kHangul, kHanyuPinlu, kHanyuPinyin, kJapaneseKun, kJapaneseOn, kKorean, kMandarin, kTang, kVietnamese, kXHC1983
Unihan_Variants.txt kSemanticVariant, kSimplifiedVariant, kSpecializedSemanticVariant, kTraditionalVariant, kZVariant

4.4 Listing of Characters Covered by the Unihan Database

The following table lists the characters covered by the Unihan database, together with the version in which they were added to the Unicode Standard.

Code Points Block Name Unicode Version
U+3400…U+4DB5 CJK Unified Ideographs Extension A 3.0
U+4E00…U+9FA5 CJK Unified Ideographs 1.1
U+9FA6…U+9FBB CJK Unified Ideographs 4.1
U+9FBC…U+9FC3 CJK Unified Ideographs 5.1
U+9FC4…U+9FCB CJK Unified Ideographs 5.2
U+9FCC CJK Unified Ideographs 6.1
U+9FCD…U+9FD5 CJK Unified Ideographs 8.0
U+9FD6…U+9FEA CJK Unified Ideographs 10.0
U+9FEB…U+9FEF CJK Unified Ideographs 11.0
U+F900…U+FA2D CJK Compatibility Ideographs
N.B., 12 code points in this range (U+FA0E, U+FA0F, U+FA11, U+FA13, U+FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27, U+FA28, and U+FA29) lack a canonical Decomposition_Mapping value in UnicodeData.txt and so are not true CJK Compatibility Ideographs. These twelve characters should be treated as proper CJK Unified Ideographs.
1.1
U+FA2E…U+FA2F CJK Compatibility Ideographs 6.1
U+FA30…U+FA6A CJK Compatibility Ideographs 3.2
U+FA6B…U+FA6D CJK Compatibility Ideographs 5.2
U+FA70…U+FAD9 CJK Compatibility Ideographs 4.1
U+20000…U+2A6D6 CJK Unified Ideographs Extension B 3.1
U+2A700…U+2B734 CJK Unified Ideographs Extension C 5.2
U+2B740…U+2B81D CJK Unified Ideographs Extension D 6.0
U+2B820…U+2CEAF CJK Unified Ideographs Extension E 8.0
U+2CEB0…U+2EBE0 CJK Unified Ideographs Extension F 10.0
U+2F800…U+2FA1D CJK Compatibility Supplement 3.1

Note that some CJK characters אל explicitly have property data in the Unihan database, such as:

Code Points Block Name Unicode Version
U+2E80…U+2E99 CJK Radicals Supplement 3.0
U+2E9B…U+2EF3 CJK Radicals Supplement 3.0
U+2F00…U+2FD5 Kangxi Radicals 3.0
U+2FF0…U+2FFB Ideographic Description Characters 3.0
U+3000…U+3037 CJK Symbols and Punctuation 1.1
U+3038…U+303A CJK Symbols and Punctuation 3.0
U+303B…U+303D CJK Symbols and Punctuation 3.2
U+303E CJK Symbols and Punctuation 3.0
U+303F CJK Symbols and Punctuation 1.1
U+3105…U+312C Bopomofo 1.1
U+312D Bopomofo 5.1
U+3190…U+319F Kanbun 1.1
U+31A0…U+31B7 Bopomofo Extended 3.0
U+31C0…U+31CF CJK Strokes 4.1
U+31D0…U+31E3 CJK Strokes 5.1
U+3220…U+3243 Enclosed CJK Letters and Months 1.1
U+3280…U+32B0 Enclosed CJK Letters and Months 1.1
U+32C0…U+32CB Enclosed CJK Letters and Months 1.1
U+3358…U+3370 CJK Compatibility 1.1
U+337B…U+337F CJK Compatibility 1.1
U+33E0…U+33FE CJK Compatibility 1.1


5 History

The Unihan database originated as a Hypercard stack using data provided by such organizations as Apple, RLG, and Xerox. Printed versions are found in The Unicode Standard, Version 1.0, volume 2. Electronic versions were available on floppy disk in the form of a file called CJKXREF.TXT.

The first general electronic release of CJKXREF.TXT (961 kB) was included with Unicode 1.1.5 in July 1995. This version of the file is in a multi-column format and includes the data used in printing The Unicode Standard, Version 1.0, volume 2 with the exception of the Fujitsu mappings, which were found to be incorrect and withdrawn.

The electronic version of the Unihan database was substantially revised for the publication of Unicode 2.0.0 in July 1996. The file was renamed UNIHAN.TXT its permanent, archival link is Unihan-1.txt (7.9 MB). The format of the file is essentially the same as the current release, although consolidated into a single file. The fields were explicitly named for the first time. The data was at the time maintained using custom, MacApp-based database software. The source code for this software used an enumerated type for the numeric field tags, and the enumerator names (each beginning with a "k" indicating their use as a constant) were used in the text file as field names.

Unihan-1.txt was at some point accidentally truncated on line 330,553 (partway through the data for U+8BC1). No corrected version of the file was made available. Instead, it was superseded by the Unihan-2.txt (10 MB) file released with Unicode 2.1.2 in May 1998.

The difficulty of downloading a file 19 MB in size with the technology of the time led to the Unihan database being made available as both a single text file and compressed archives of that text file as of Unicode 3.1.0 in March 2001. The format of the Unihan database remained essentially unchanged until Unicode 5.1.0 (April 2008), when the text file was no longer included and the database became available only as a zipped archive.

Finally, the archive was changed from containing one text file to containing multiple text files as of Unicode 5.2.0 (October 2009).


Built-in encoding schemes

.NET provides various encoding schemes "out of the box". What follows below is a description (as far as I can find) of the various different encoding schemes, and how they can be retrieved.

ASCII

ASCII is one of the most commonly known and frequently misunderstood character encodings. Contrary to popular belief, it is only 7 bit - there are no ASCII characters above 127. If anyone says that they wish to encode (for example) "ASCII 154" they may well not know exactly which encoding they actually mean. If pressed, they're likely to say it's "extended ASCII". There is no encoding scheme called "extended ASCII". There are many 8-bit encodings which are supersets of ASCII, and usually it is one of these which is meant - commonly whatever Windows Code Page is the default for their computer. Every ASCII character has the same value in the ASCII encoded as in the Unicode coded character set - in other words, ASCII איקס is the same character as Unicode איקס for all characters within ASCII. The .NET ASCIIEncoding class (an instance of which can be easily retrieved using the Encoding.ASCII property) is slightly odd, in my view, as it appears to encode by merely stripping away all bits above the bottom 7. This means that, for instance, Unicode character 0xb5 ("micro sign") after encoding and decoding would become Unicode 0x35 ("digit five"), rather than some character showing that it was the result of encoding a character not contained within ASCII.

UTF-8 is a good general-purpose way of representing Unicode characters. Each character is encoded as a sequence of 1-4 bytes. (All the characters < 65536 are encoded in 1-3 bytes I haven't checked whether .NET encodes surrogates as two sequences of 1-3 bytes, or as one sequence of 4 bytes). It can represent all characters, it is "ASCII-compatible" in that any sequence of characters in the ASCII set is encoded in UTF-8 to exactly the same sequence of bytes as it would be in ASCII. In addition, the first byte is sufficient to say how many additional bytes (if any) are required for the whole character to be decoded. UTF-8 itself needs no byte-ordering mark (BOM) although it could be used as a way of giving evidence that the file is indeed in UTF-8 format. The UTF-8 encoded BOM is always 0xef 0xbb 0xbf. Obtaining a UTF-8 encoding in .NET is simple - use the Encoding.UTF8 property. In fact, a lot of the time you don't even need to do that - many classes (such as StreamWriter ) used UTF-8 by default when no encoding is specified. (Don't be misled by Encoding.Default - that's something else entirely!) I suggest always specifying the encoding however, just for the sake of readability.

UTF-16 and UCS-2

UTF-16 is effectively how characters are maintained internally in .NET. Each character is encoded as a sequence of 2 bytes, other than surrogates which take 4 bytes. The opportunity of using surrogates is the only difference between UTF-16 and UCS-2 (also known as just "Unicode"), the latter of which can only represent characters 0-0xffff. UTF-16 can be big-endian, little-endian, or machine-dependent with optional BOM (0xff 0xfe for little-endianness, and 0xfe 0xff for big-endianness). In .NET itself, I believe the surrogate issues are effectively forgotten, and each value in the surrogate pair is treated as an individual character, making UCS-2 and UTF-16 "the same" in a fuzzy sort of way. (The exact differences between UCS-2 and UTF-16 rely on deeper understanding of surrogates than I have, I'm afraid - if you need to know details of the differences, chances are you'll know more than I do anyway.) A big-endian encoding may be retrieved using Encoding.BigEndianUnicode, and a little-endian encoding may be retrieved using Encoding.Unicode. Both are instances of System.Text.UnicodeEncoding, which can also be constructed directly with appropriate parameters for whether or not to emit the BOM and which endianness to use when encoding. I believe (although I haven't tested) that when decoding binary content, a BOM in the content overrides the endianness of the encoder, so the programmer doesn't need to do any extra work to decode appropriately if they either know the endianness or the content contains a BOM.

UTF-7 is rarely used, in my experience, but encodes Unicode (possibly only the first 65535 characters) entirely into ASCII characters (not bytes!). This can be useful for mail where the mail gateway may only support ASCII characters, or some subset of ASCII (in, for example, the EBCDIC encoding). This description sounds fairly woolly for a reason: I haven't looked into it in any detail, and don't intend to. If you need to use it, you'll probably understand it reasonably well anyway, and if you don't absolutely have to use it, I'd suggest steering clear. An encoding instance in .NET can be retrieved using Encoding.UTF7

Windows/ANSI Code Pages

Windows Code Pages are usually either single or double byte character sets, encoding up to 256 or 65536 characters respectively. Each is numbered, an encoding for a known code page number can be retrieved using Encoding.GetEncoding(int) . Code pages are mostly useful for legacy data which is often stored in the "default code page". An encoding for the default code page can be retrieved using Encoding.Default . Again, I try to avoid using code pages where possible. More information is available in the MSDN.

ISO-8859-1 (Latin-1)

Like ASCII, every character in Latin-1 has the same code there as in Unicode. I haven't been able to ascertain for מסוים whether or not Latin-1 has a "hole" of undefined characters from 128 to 159, or whether it contains the same control characters there that Unicode does. (I had begun to lean towards the "hole" idea, but Wikipedia disagrees, so I'm still sitting on the fence). Latin-1 is also code page 28591, so obtaining an encoding for it is simple: Encoding.GetEncoding (28591) .


1 תשובה 1

It's not clear why you would need to p/invoke the native MessageBoxU function, given you're not using it anywhere, correctly preferring the language's own MsgBox wrapper.

Remove all the dead/commented-out code if you're not using it - otherwise is obscures the intent of the code.

As far as I know, Universal_Converter_v1.0 is only a valid VBA identifier if you surround it with [SquareBrackets] , because the dot is a special character that cannot legally be part of an identifier. Version numbers don't belong in names either, and Upper_Snake_Case looks very strange when everything in the language's standard libraries is in PascalCase .

What happens when you make a minor change to that procedure, you increment the minor version digit and update all call sites accordingly? That's . madness!

A good reason to refactor/rename would be to make the procedure's name start with a verb: UniversalConverter looks more like a name for a class than one for a procedure keep nouns for types, and use verbs for procedures.

Why would one be a constant and the other a variable? Avoid numeric suffixes in identifiers, they quickly make a maintenance nightmare.

Where's Option Explicit ? Looks like you're using variables that aren't declared anywhere - that's another maintenance nightmare waiting to happen.

You're not consistently using Hungarian notation, some of the prefixes you use seem completely arbitrary and meaningless. I like lenXxx for a variable that's holding the length of a string because it tells the reader what the variable is used for, but strXxx and oRange (boy that one is funny! Say it 3 times out loud if you're not sure why!) have prefixes that stand for a type, and that's wrong.

The code could use some vertical whitespace between procedures and functions, it would feel less monolithic.

Functions Mid , Str , Chr , ChrW , Left and Right return a Variant , which incurs an implicit type conversion. Use the "stringly-typed" Mid$ , Str$ , Chr$ , ChrW$ , Left$ and Right$ versions instead, which return an actual String . It's not clear why you're only לִפְעָמִים using them.

VBA has too many loop constructs Do While. Loop is there only to please the fans of Do. Loop - a more succinct construct would be While. Wend .


How to Convert Text to Unicode Code Points

The process for working with character encodings in Python, or converting text to Unicode code points at any point in time, can be incredibly confusing, complex, and convoluted – especially if you aren’t particularly familiar with the Unicode language to begin with.

Thankfully though, there are a lot of tools (and a lot of tutorials) out there that can dramatically streamline and simplify things for you moving forward.

You’ll find the inside information below incredibly useful at helping you tackle Unicode code points but there are a host of “automatic converters” that you might want to take advantage of online as well (almost all of the best ones being open-source and free of charge, too). If you’re working with a web host like BlueHost, or using a CMS like WordPress, then this conversion process is already taken care of for you.

By the time you’re done with the details below you’ll know exactly how to:

  • Understand the overall conceptual point of character encodings and the numbering system in Unicode
  • How Unicode has built-in support for numbering systems through different INT literals
  • How to take advantage of built-in functions that are specifically designed to “play nicely” with character encodings and different numbering systems

What exactly is character encoding to begin with?

To start things off you have to understand exactly what character encoding is to begin with, which can be a bit of a tall task considering the fact that there are hundreds of character encodings that you can deal with as a programmer throughout your career.

One of the very simplest character encodings is ASCII so that’s going to be the fundamental standpoint that we work with throughout this quick example. Relatively small and including contained encoding you aren’t going to have to worry about a whole lot of headache or hassle wrapping your head around this process but will be able to use the fundamentals here in any other character encoding you do later down the line.

  • All lowercase English letters as well as all uppercase English letters
  • Most traditional punctuation and symbols you’ll find on a keyboard
  • Whitespace markers
  • And even some non-printable characters

All of these inputs can be translated from traditional characters that we are able to see and read in our own native language (if you’re working in English, anyways) to integers and inevitably into computer bits – each and every one of that can be encoded to a very unique and specific sequence of bits that do something very specific in the world of Unicode.

If every single character has its own specific code point (sometimes referred to as an integer) that means that different characters are segmented into different code point ranges inside of the actual ASCII “language”.

In ASCII a code point range breakdown is as follows:

  • 0 through 31 code points – These are your control or nonprintable characters
  • 32 through 64 code points – These are your symbols, your numbers, and punctuation marks as well as whitespace
  • 65 through 90 code points – These would be all of your uppercase English alphabet letters
  • 91 through 96 code points – Graphemes that can include brackets and backslashes
  • 97 through 122 code points – These are your lowercase English alphabet letters
  • 123 through 126 code points – Ancillary graphemes
  • Code point 127 – This is your Control point or the Delete key

All 128 of those individual characters encompass the entirety of the character set that is “understood” by the ASCII language. If a character is input into ASCII that isn’t included in the list we highlighted above isn’t going to be expressed and it isn’t going to be understood based on this encoding scheme.

How Bits Work

As we highlighted above, individual characters are going to be converted into individual code points that are later expressed as integers and bits – the essential building block of all language and information that computers understand.

A bit is the expression of binary language, a signal that your computer understands because it only has one of two binary states. A bit is either a zero or a one, a “yes” or a “no”, a “true” or a “false”, and it’s either going to be “on” or it’s going to be “off”.

Because all the data that computers have to work with needs to be condensed down to its bare-bones and its most essential elements (bits) each and every one of those individual characters that may be input into the Unicode language has to be distilled down into decimal form.

As more decibels are added the binary form is expanded on, always looking for ways to express the information and data being conveyed in binary form so that the computer can understand exactly what’s happening.

The problem with ASCII and the rise of Unicode

The reason that Unicode exists has a lot to do with the fact that ASCII as a computer language simply doesn’t have a large enough set of characters to accommodate every other language in the world, unique dialects, and computers that are capable of working with and reading different symbols and glyphs.

Truth be told, the biggest knock against ASCII has always been that it doesn’t even have a large enough character set to accommodate the entirety of the English language, even.

This is where Unicode swings in to the scene.

Essentially acting as the same fundamental building block language that your computer can understand, Unicode is made up of a much larger (MUCH larger) set of individual code points.

There are technically a variety of different encoding schemes that can be taken advantage of when it comes to Unicode as well, each of them with their own distinct code points, but the overwhelming majority of folks using Unicode are going to leverage UTF-8 (something that’s become a bit of a universal standard).

Unicode significantly expands on the traditional ASCII table. Instead of being capable of handling 128 characters, though, Unicode can handle 1,114,112 different characters – representing a significant upgrade that allows for far more complexity and precision in a programming language.

At the same time, some argue that Unicode isn’t exactly and encoding specifically but instead is something more of an implementation of a variety of other character encodings. There’s a lot of nuance here that you may or may not be interested in getting into (depending on how deep you want to dive into the world of Unicode), but it’s important to know that there is a distinction between the two.

How to actually convert text into Unicode

If you are seriously interested in converting text into Unicode the odds are very (VERY) good that you aren’t going to want to handle the heavy lifting all on your own, simply because of the complexity that all those individual characters and their encoding can represent.

Instead, you’ll want to take advantage of online conversion tools that allow you to input pretty much any character imaginable directly into this tool and have it immediately transform that character set (that very specific character set) into exact Unicode – almost always in UTF-8 but sometimes in UTF-16 or UTF-32, depending on what you are interested in.

These conversion tools are ridiculously easy to use and as long as you are moving forward with conversion solutions from reputable sources you shouldn’t have anything to worry about as far as accuracy, security, or safety are concerned.

It sure beats having to try and figure out the binary code points of characters in Unicode manually!


צפו בסרטון: הפרדה בין ערך שלם לערך ממשי (אוֹקְטוֹבֶּר 2021).