สรุป
เมื่อมีการแปลงตัวเลข Unicode แบบเต็มความกว้าง (U + FF10 + FF19) เป็นตัวเลขครึ่งความกว้างมาตรฐาน (U +0030-U + 0039) ในขณะที่ใช้ WideCharToMultiByte การดำเนินการนี้จะไม่สามารถทำการแปลงบน Windows ๙๕และ๙๘ได้ หนึ่งควรใช้ API LCMapString ที่มีค่าสถานะ LCMAP_HALFWIDTH การแปลงอักขระแบบเต็มความกว้างเป็นอักขระแบบครึ่งความกว้าง
ข้อมูลเพิ่มเติม
เนื่องจากเวอร์ชัน W ของ API นี้ไม่ทำงานบน Windows ๙๕และ Windows ๙๘๑จำเป็นต้องแปลงอักขระแบบเต็มความกว้างจาก Unicode เป็นสตริงที่ DBCS ที่เหมาะสมแล้วโทรหา LCMapString เพื่อทำการแปลง ต่อไปนี้คือตัวอย่างการทำงานกับตัวเลข Unicode แบบเต็มความกว้างในภาษาจีนแบบดั้งเดิมภาษาจีนภาษาญี่ปุ่นและภาษาเกาหลี:
#include <stdio.h>#include <tchar.h>#include <windows.h>void main(void){WCHAR T[2] = {65301, 0};TCHAR dbcs[3], conv[3];WideCharToMultiByte(CP_ACP, 0, T, -1, dbcs, sizeof(dbcs), NULL, NULL);int nRes = LCMapString(LOCALE_USER_DEFAULT, LCMAP_HALFWIDTH, dbcs,sizeof(dbcs),conv,sizeof(conv));printf("%s\n",conv);}
เมื่อต้องการทำงานการแปลงสำหรับ Windows ๙๕และ Windows ๙๘ให้ติดตั้งหนึ่งในสี่หน้าโค้ด (๙๕๐สำหรับจีนแบบดั้งเดิม, ๙๓๖สำหรับภาษาจีนสมัยใหม่, ๙๓๒สำหรับภาษาญี่ปุ่นและ๙๔๙สำหรับภาษาเกาหลี) บนระบบและตั้งค่าพารามิเตอร์ ID ของหน้าและ ID ของตำแหน่งที่ตั้งอย่างชัดเจนในการโทรผ่าน API
อ้างอิง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งโค้ดหน้าให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
๑๖๔๙๔๘ วิธีการติดตั้งโค้ดเพจ