คำอธิบายเกี่ยวกับการเก็บข้อมูล UTF 8 ใน SQL Server

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 232580 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

สรุป

โปรแกรมประยุกต์บางโปรแกรม (โดยเฉพาะที่ที่อยู่เว็บที่ขึ้นอยู่กับ) ต้องจัดการกับข้อมูล Unicode ที่มีการเข้ารหัส ด้วยวิธีการเข้ารหัส UTF-8 sql Server 7.0 และ SQL Server 2000 ใช้เข้าแตกต่างกัน Unicode รหัส (UCS 2) และไม่รู้จัก UTF 8 เป็นข้อมูลอักขระที่ถูกต้อง บทความนี้อธิบายตัวเลือกบางอย่างสำหรับใช้ในสถานการณ์นี้

ข้อมูลเพิ่มเติม

ข้อมูล unicode สามารถถูกเข้ารหัสในลักษณะต่าง ๆ มากมาย UCS 2 และ UTF 8 ได้สองวิธีทั่วไปเพื่อเก็บรูปแบบบิตที่แทนอักขระ Unicode Microsoft Windows NT, SQL Server, Java, COM และโปรแกรมควบคุม ODBC เซิร์ฟเวอร์ SQL และผู้ให้บริการ OLEDB ทั้งหมดภายในแทนข้อมูล Unicode เป็น UCS 2

ตัวเลือกสำหรับการใช้ SQL Server 7.0 หรือ SQL Server 2000 เป็นเซิร์ฟเวอร์ backend สำหรับโปรแกรมประยุกต์ที่ส่ง และรับข้อมูล Unicode ที่มีการเข้ารหัสเป็น UTF 8 รวม:
  1. หากโปรแกรมประยุกต์ของคุณใช้ Active Server หน้า (ASP) และคุณใช้ข้อมูลทางอินเทอร์เน็ต Server (IIS) 5.0 และ Microsoft Windows 2000 คุณสามารถเพิ่ม "<% Session.Codepage=65001% >" สคริปต์การ ASP ฝั่งเซิร์ฟเวอร์ของคุณ ซึ่งแนะนำให้ IIS เพื่อแปลงสายอักขระทั้งหมดที่สร้างขึ้นแบบไดนามิก (ตัวอย่าง: Response.Write) จาก UCS-2 ถึง 8 UTF โดยอัตโนมัติก่อนส่งไปยังไคลเอ็นต์

    ถ้าคุณไม่ต้องการเปิดใช้งานเซสชัน คุณสามารถหรือใช้ directive ฝั่งเซิร์ฟเวอร์ " < %@เพจรหัส = 65001% > " ได้

    ข้อมูลใด ๆ UTF 8 ที่ส่งจากไคลเอ็นต์กับเซิร์ฟเวอร์ผ่าน GET หรือ POST จะยังแปลง UCS 2 โดยอัตโนมัติ คุณสมบัติ Session.Codepage เป็นวิธีแนะนำในการจัดการข้อมูล UTF 8 ภายในโปรแกรมประยุกต์เว็บ การตั้งค่าเพจรหัสนี้ไม่พร้อมใช้งานบน IIS 4.0 และ Windows NT 4.0 สำหรับข้อมูลเพิ่มเติม ให้ดูบทความในฐานความรู้ของ Microsoft ต่อไปนี้:
    254313ข้อความแสดงข้อผิดพลาด: Active Server หน้า Error 'ASP 0203' รหัสที่ไม่ถูกต้อง
  2. แปลไปยัง และ จาก UCS 2 หรือ UTF 8 ตามความเหมาะสมภายในแอพลิเคชัน ตัวอย่างรหัสสำหรับชนิดของการแปลงนี้จะอยู่ที่ไซต์ของ Consortium Unicode:

    ftp://ftp.unicode.org/Public/PROGRAMS/CVTUTF/
    คำอธิบายพื้นฐานของอัลกอริทึมการแปลง UCS-2 UTF-8 สามารถพบได้ในเอกสารที่ข้อคิดเห็นอินเทอร์เน็ตคำร้องขอสำหรับเกี่ยวกับ RFC2279

    ใน Windows NT หรือ Windows 2000 คุณสามารถใช้ฟังก์ชัน Win32MultiByteToWideCharและWideCharToMultiByteเมื่อต้องการแปลง UTF 8 เข้า และออก จาก UCS 2 โดยการส่งผ่าน CP_UTF8 ที่คง (65001) เป็นพารามิเตอร์แรกไปยังฟังก์ชัน
  3. ปรับเปลี่ยนแอพลิเคชันที่จะใช้ UCS 2 แทนการเข้ารหัส UTF-8
  4. เก็บข้อมูล UTF 8 จริงบนเซิร์ฟเวอร์โดยใช้คอลัมน์ไบ นารี/VARBINARY/รูป การเก็บข้อมูล UTF 8 บน SQL Server หมายความ ว่า คุณไม่สามารถใช้ SQL Server เพื่อเรียงลำดับ หรือช่วงของค่าเหล่านี้ในการค้นหาว่าข้อมูลมีข้อมูลของอักขระที่ถูกต้อง ชนิดของการดำเนินงาน ในคอลัมน์ที่ประกอบด้วยข้อมูล UTF 8 ที่จะไม่คืนผลลัพธ์ที่คาดไว้รวม "ใบสั่ง BY" มากกว่า - กว่า" > "และน้อยกว่า - กว่า"<" comparisons,="" and="" the="" built-in="" sql="" server="" string="" manipulation="" functions="" such="" as=""></">

    อย่างไรก็ตาม equality comparisons จะทำงานตราบเท่าที่สายอักขระที่จะเปรียบจะเท่ากับระดับไบต์ โปรดสังเกตว่า ถ้าคุณเก็บข้อมูล UTF 8 ใน SQL Server คุณไม่ควรใช้อักขระคอลัมน์ (อักขระที่ ไม่/NCHAR/VARCHAR และ forth อื่น ๆ) UTF 8 ไม่ข้อมูลอักขระที่ถูกต้อง ของ sql server และ โดยการเก็บข้อมูลที่ไม่ใช่อักขระในคอลัมน์อักขระเสี่ยง encountering ปัญหาเช่นปัญหาที่กล่าวถึงในบทความฐานความรู้ของ Microsoft ต่อไปนี้:
    155723INF: SQL Server Truncation ของสายอักขระแบบ DBCS
    234748PRB: โปรแกรมควบคุม ODBC ของเซิร์ฟเวอร์ SQL แปลงเหตุการณ์ภาษา Unicode
    ถ้าคุณกำลัง considering อ็อพชันนี้ เก็บไว้ในโปรดระลึกไว้ว่า ถ้าคุณต้องการเข้าถึง UTF 8 ข้อมูลที่เก็บอยู่ภายใน SQL Server จากใด ๆ โปรแกรมประยุกต์อื่นที่ไม่ใช่เว็บเบราว์เซอร์ (ตัวอย่างเช่น จากโปรแกรมที่ไม่ใช่เว็บใช้ประยุกต์ ODBC) คุณจะต้องทำการแปลงจาก UTF 8 UCS 2 ภายในโปรแกรมประยุกต์นี้เป็น ODBC, OLEDB, COM การเรียก Win32 API, VB และรันไทม์ C string manipulation ฟังก์ชันไม่ได้ทำงานกับข้อมูล UTF-8 ซึ่งย้าย burden ของแปลไปยังโปรแกรมประยุกต์ที่แตกต่างกัน
  5. ถ้าความต้องการของคุณไม่สามารถรวมจำเป็นในการเก็บข้อมูลจากชุดภาษาที่ไม่สามารถถูกแก้ไข โดยหน้ารหัสเดียว คุณอาจไม่จำเป็นต้องใช้ Unicode
Unicode support was introduced to SQL Server starting with SQL Server 7.0. Since SQL Server 6.5 does not support the storing of Unicode data, the only options for SQL Server 6.5 are outlined in step 4 and step 5.

คุณสมบัติ

หมายเลขบทความ (Article ID): 232580 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
Keywords: 
kbinfo kbmt KB232580 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:232580

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com