คำถามติดแท็ก character-encoding

การเข้ารหัสอักขระหมายถึงวิธีแสดงอักขระเป็นชุดของไบต์ การเข้ารหัสอักขระสำหรับเว็บถูกกำหนดในมาตรฐานการเข้ารหัส

30
ฉันจะได้รับการแสดงไบต์ที่สอดคล้องกันของสตริงใน C # โดยไม่ต้องระบุการเข้ารหัสด้วยตนเองได้อย่างไร
ฉันจะแปลง a stringเป็นbyte[]in. NET (C #) โดยไม่ต้องระบุการเข้ารหัสเฉพาะด้วยตนเองได้อย่างไร ฉันจะเข้ารหัสสตริง ฉันสามารถเข้ารหัสได้โดยไม่แปลง แต่ฉันก็ยังอยากรู้ว่าทำไมการเข้ารหัสจึงมาเล่นที่นี่ นอกจากนี้ทำไมการเข้ารหัสจึงควรนำมาพิจารณาด้วย ฉันไม่สามารถรับสตริงที่จัดเก็บไว้ในไบต์ใด ทำไมถึงต้องพึ่งพาการเข้ารหัสตัวอักษร?

3
วิธีที่ดีที่สุดในการแปลงสตริงเป็นไบต์ใน Python 3
ดูเหมือนจะมีสองวิธีในการแปลงสตริงเป็นไบต์ตามที่เห็นในคำตอบของTypeError: 'str' ไม่รองรับส่วนต่อประสานบัฟเฟอร์ วิธีใดต่อไปนี้จะดีกว่าหรือไพ ธ อน หรือมันเป็นเพียงเรื่องของการตั้งค่าส่วนตัว? b = bytes(mystring, 'utf-8') b = mystring.encode('utf-8')






16
การตั้งค่าการเข้ารหัสอักขระ Java เริ่มต้น
ฉันจะตั้งค่าการเข้ารหัสอักขระเริ่มต้นที่ใช้โดย JVM (1.5.x) โดยทางโปรแกรมได้อย่างไร ฉันเคยอ่านที่-Dfile.encoding=whateverเคยเป็นวิธีที่จะไปสำหรับ JVM เก่า ฉันไม่มีความหรูหราด้วยเหตุผลที่ฉันจะไม่เข้าไป ฉันเหนื่อย: System.setProperty("file.encoding", "UTF-8"); และคุณสมบัติได้รับการตั้งค่า แต่ดูเหมือนจะไม่ทำให้การgetBytesโทรครั้งสุดท้ายด้านล่างใช้ UTF8: System.setProperty("file.encoding", "UTF-8"); byte inbytes[] = new byte[1024]; FileInputStream fis = new FileInputStream("response.txt"); fis.read(inbytes); FileOutputStream fos = new FileOutputStream("response-2.txt"); String in = new String(inbytes, "UTF8"); fos.write(in.getBytes());


3
อะไรคือความแตกต่างระหว่างชุดอักขระ utf8mb4 และ utf8 ใน MySQL?
ความแตกต่างระหว่างคืออะไรutf8mb4และutf8ชุดอักขระในMySQL ? ฉันรู้แล้วเกี่ยวกับการเข้ารหัสASCII , UTF-8 , UTF-16และUTF-32 ; แต่ฉันอยากจะรู้ว่าอะไรที่แตกต่างของutf8mb4กลุ่มการเข้ารหัสด้วยการเข้ารหัสประเภทอื่น ๆ ที่กำหนดไว้ในเซิร์ฟเวอร์ MySQL มีประโยชน์ / ข้อเสนอพิเศษในการใช้utf8mb4มากกว่าutf8หรือไม่?

5
ไม่มีการแบ่งบรรทัดหลังจากยัติภังค์
ฉันกำลังมองหาเพื่อป้องกันการแบ่งบรรทัดหลังจากยัติภังค์-ในแต่ละกรณีที่เข้ากันได้กับเบราว์เซอร์ทั้งหมด ตัวอย่าง: ฉันมีข้อความนี้: 3-3/8"ซึ่งใน HTML คือ: 3-3/8” ปัญหาคือใกล้ถึงจุดสิ้นสุดของบรรทัดเนื่องจากเครื่องหมายยัติภังค์มันแบ่งและล้อมรอบบรรทัดถัดไปแทนที่จะปฏิบัติเหมือนคำเต็ม ... 3- 3/8" ฉันได้ลองใส่ "ความกว้างเป็นศูนย์ไม่มีอักขระหยุดพัก" โดยไม่มีโชค ... 3-3/8” ฉันเห็นสิ่งนี้ใน Safari และคิดว่ามันจะเหมือนกันในทุกเบราว์เซอร์ ต่อไปนี้คือการdoctypeเข้ารหัสของฉันและตัวละคร ... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> มีวิธีใดที่ฉันสามารถป้องกันสิ่งเหล่านี้ไม่ให้เกิดการแตกหักหลังจากยัติภังค์? ฉันไม่ต้องการโซลูชันใด ๆ ที่ใช้กับทั้งหน้า ... สิ่งที่ฉันสามารถแทรกได้ตามต้องการเช่น "ความกว้างศูนย์ไม่มีอักขระหยุดพัก" ยกเว้นที่ใช้งานได้ นี่คือตัวอย่าง เพียงแค่ทำให้เฟรมแคบลงจนเส้นแบ่งที่ขีดกลาง http://jsfiddle.net/RagKH/

18
เปลี่ยนชุดอักขระเริ่มต้นของ MySQL เป็น UTF-8 ใน my.cnf หรือไม่
ขณะนี้เรากำลังใช้คำสั่งต่อไปนี้ใน PHP เพื่อตั้งค่าชุดอักขระเป็นUTF-8ในแอปพลิเคชันของเรา เนื่องจากนี่เป็นค่าใช้จ่ายเล็กน้อยเราจึงต้องการตั้งค่านี้เป็นค่าเริ่มต้นใน MySQL เราสามารถทำได้ใน /etc/my.cnf หรือในสถานที่อื่นได้หรือไม่? SET NAMES 'utf8' SET CHARACTER SET utf8 ฉันค้นหาชุดอักขระเริ่มต้นใน /etc/my.cnf แต่ไม่มีอะไรเกี่ยวกับชุดอักขระ ณ จุดนี้ฉันทำต่อไปนี้เพื่อตั้งค่า MySQL charset และ collation variables เป็น UTF-8: skip-character-set-client-handshake character_set_client=utf8 character_set_server=utf8 นั่นเป็นวิธีที่ถูกต้องในการจัดการกับสิ่งนี้หรือไม่?

24
ตรวจจับการเข้ารหัสและทำให้ทุกอย่างเป็น UTF-8
ฉันอ่านข้อความจำนวนมากจากฟีด RSS ต่างๆและแทรกลงในฐานข้อมูลของฉัน แน่นอนว่ามีการเข้ารหัสอักขระหลายตัวที่ใช้ในฟีดเช่น UTF-8 และ ISO 8859-1 น่าเสียดายที่บางครั้งมีปัญหากับการเข้ารหัสของข้อความ ตัวอย่าง: "ß" ใน "Fußball" ควรมีลักษณะเช่นนี้ในฐานข้อมูลของฉัน: "Ÿ" หากเป็น "Ÿ" แสดงว่าถูกต้อง บางครั้ง "ß" ใน "Fußball" มีลักษณะเช่นนี้ในฐานข้อมูลของฉัน: "ß" แน่นอนว่ามันถูกแสดงอย่างผิด ๆ ในกรณีอื่น ๆ "ß" จะถูกบันทึกเป็น "ß" - ดังนั้นโดยไม่มีการเปลี่ยนแปลงใด ๆ จากนั้นมันก็จะแสดงผิด ฉันจะทำอย่างไรเพื่อหลีกเลี่ยงกรณีที่ 2 และ 3 ฉันจะทำให้ทุกอย่างเข้ารหัสเหมือนกันโดยเฉพาะอย่างยิ่ง UTF-8 ได้อย่างไร ฉันต้องใช้utf8_encode()เมื่อใดฉันจะต้องใช้เมื่อใดutf8_decode()(ชัดเจนว่าผลกระทบคืออะไร แต่เมื่อใดฉันต้องใช้ฟังก์ชั่น?) และเมื่อใดที่ฉันต้องใช้อะไรกับอินพุต? ฉันจะทำให้การเข้ารหัสทุกอย่างเหมือนกันได้อย่างไร บางทีด้วยฟังก์ชั่นmb_detect_encoding()? ฉันสามารถเขียนฟังก์ชันสำหรับสิ่งนี้ได้หรือไม่? ดังนั้นปัญหาของฉันคือ: ฉันจะค้นหาการเข้ารหัสข้อความที่ใช้ได้อย่างไร …

6
“ ประเภทเนื้อหา: application / json; charset = utf-8” จริงๆหมายถึงอะไร
เมื่อฉันทำการร้องขอ POST ที่มีเนื้อหา JSON ไปยังบริการ REST ของฉันฉันรวมContent-type: application/json; charset=utf-8ไว้ในส่วนหัวของข้อความ หากไม่มีส่วนหัวนี้ฉันได้รับข้อผิดพลาดจากบริการ ฉันสามารถใช้งานได้Content-type: application/jsonโดยไม่ต้องมี;charset=utf-8ส่วนร่วม ไม่ว่าสิ่งที่charset=utf-8ทำอย่างไร ฉันรู้ว่ามันระบุการเข้ารหัสตัวอักษร แต่บริการใช้งานได้ดีถ้าไม่มีมัน การเข้ารหัสนี้ จำกัด อักขระที่สามารถอยู่ในเนื้อหาของข้อความหรือไม่?

12
ทำไมเราถึงใช้ Base64
Wikipediaพูดว่า รูปแบบการเข้ารหัส Base64 มักใช้เมื่อไม่จำเป็นต้องเข้ารหัสข้อมูลไบนารีที่ต้องจัดเก็บและถ่ายโอนผ่านสื่อที่ออกแบบมาเพื่อจัดการกับข้อมูลที่เป็นข้อความ นี่คือเพื่อให้แน่ใจว่าข้อมูลยังคงไม่เปลี่ยนแปลงโดยระหว่างการขนส่ง แต่ไม่ใช่ว่าข้อมูลจะถูกจัดเก็บ / ส่งเป็นไบนารี่เสมอเพราะหน่วยความจำที่เครื่องของเรามีไบนารี่สโตร์และมันก็ขึ้นอยู่กับว่าคุณตีความมันอย่างไร ดังนั้นไม่ว่าคุณจะเข้ารหัสรูปแบบบิต010011010110000101101110เช่นเดียวกับManใน ASCII หรือTWFuใน Base64 ในที่สุดคุณก็จะเก็บรูปแบบบิตเดียวกัน หากการเข้ารหัสขั้นสุดท้ายอยู่ในรูปของเลขศูนย์และทุกเครื่องและสื่อสามารถจัดการกับมันได้จะเป็นอย่างไรถ้าข้อมูลถูกแสดงเป็น ASCII หรือ Base64 "สื่อที่ออกแบบมาเพื่อจัดการกับข้อมูลที่เป็นข้อความ" หมายความว่าอย่างไร พวกเขาสามารถจัดการกับ binary => พวกเขาสามารถจัดการกับอะไรก็ได้ ขอบคุณทุกคนฉันคิดว่าฉันเข้าใจแล้ว เมื่อเราส่งข้อมูลเราไม่สามารถมั่นใจได้ว่าข้อมูลจะถูกตีความในรูปแบบเดียวกับที่เราตั้งใจให้เป็น ดังนั้นเราจึงส่งข้อมูลที่เข้ารหัสในบางรูปแบบ (เช่น Base64) ที่ทั้งสองฝ่ายเข้าใจ ด้วยวิธีนี้แม้ว่าผู้ส่งและผู้รับจะตีความสิ่งเดียวกันต่างกัน แต่เนื่องจากพวกเขาเห็นด้วยกับรูปแบบการเข้ารหัสข้อมูลจะไม่ถูกตีความผิด จากตัวอย่าง Mark Byers ถ้าฉันต้องการส่ง Hello world! วิธีหนึ่งคือการส่งใน ASCII เช่น 72 101 108 108 111 10 119 111 114 108 …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.