PostgreSQL Escape อักขระพิเศษของ Microsoft ใน Select Query

PostgreSQL, DBvisualizer และ Salesforce

ฉันกำลังเลือกบันทึกจากตารางฐานข้อมูลและส่งออกเป็นไฟล์ CSV: คั่นด้วยเครื่องหมายจุลภาคและเข้ารหัส UTF8 ฉันส่งไฟล์ไปยังผู้ใช้ที่กำลังอัปโหลดข้อมูลไปยัง Saleforce ฉันไม่รู้จัก Salesforce ดังนั้นฉันจึงไม่รู้เรื่องนี้เลย เธอรายงานว่าข้อมูลบางส่วนในไฟล์แสดงเป็นอักขระซึ่งพูดพล่อยๆ (ไม่ใช่ UTF8) (ดูด้านล่าง)

ดูเหมือนว่าผู้ใช้ของเราบางคนกำลังคัดลอก/วางอีเมลลงในแบบฟอร์มบนเว็บซึ่งจะแทรกอีเมลเหล่านั้นลงในฐานข้อมูลของเรา วันที่จากส่วนหัวของอีเมล (ฉันเชื่อว่า) เป็นข้อความที่แสดงเป็นคำพูดที่ไม่มีความหมาย

11‎/‎17‎/‎2015‎ ‎7‎:‎26‎:‎26‎ ‎AM

กลายเป็น

‎11‎/‎16‎/‎2015‎ ‎07‎:‎26‎:‎26‎ ‎AM

ข้อความในช่อง db ดูเป็นปกติ เมื่อมีการส่งออกเป็นไฟล์ csv จากนั้นไฟล์นั้นจะถูกดูในตัวแก้ไขข้อความ เช่น Wordpad หรือ Salesforce จากนั้นเธอก็เห็นตัวละครแปลก ๆ

สิ่งนี้จะเกิดขึ้นกับวันที่จากข้อความที่คัดลอก/วางลงใน form/db เท่านั้น ฉันไม่รู้ว่ามีวิธีใดหรือมีวิธีใดที่จะลบอักขระที่ "มองไม่เห็น" เหล่านี้ออก

ในแต่ละครั้งจะมีอักขระสามตัวเหมือนกัน: ‎ ฉันได้ regex_replace() กับสิ่งเหล่านี้เพื่อแยกออก แต่มันใช้งานไม่ได้ ฉันคิดว่าเนื่องจากไม่เห็นพวกมันในช่อง db regex จึงเห็นพวกมัน

ดูเหมือนว่าแม้ว่าฉันจะไม่เห็นอักขระเหล่านี้ แต่ก็ต้องอยู่ในรูปแบบบางอย่างที่ทำให้แสดงในโปรแกรมแก้ไขข้อความ เช่น Wordpad หรือไคลเอนต์ Salesforce หลังจากส่งออกเป็น csv

ฉันอาจจะทำการค้นหา/ค้นหา/แทนที่จำนวนมากในโปรแกรมแก้ไขข้อความได้ แต่จะเป็นการดีถ้าทำเช่นนี้ใน sql และหลีกเลี่ยงขั้นตอนพิเศษในแต่ละครั้ง

หวังว่ามีคนเห็นสิ่งนี้และรู้วิธีแก้ปัญหาง่ายๆ

ขอบคุณสำหรับแนวคิดหรือคำแนะนำที่อาจช่วยได้


person John Cowan    schedule 14.08.2019    source แหล่งที่มา


คำตอบ (1)


ลำดับ ‎ คือเครื่องหมายจากซ้ายไปขวา ซึ่งเข้ารหัสในรูปแบบ UTF- 8 (เป็น 0xE2 0x80 0x8E) แต่ถูกอ่านราวกับว่าอยู่ใน Windows-1252

มองไม่เห็นเครื่องหมายจากซ้ายไปขวา ดังนั้นการที่คุณไม่สามารถมองเห็นได้ในฐานข้อมูลแสดงว่ามีการเข้ารหัสอย่างถูกต้อง แต่ไม่ทราบแน่ชัดว่าข้อมูลใช้เส้นทางใดหลังจากนั้น จึงยากที่จะเดาได้อย่างแน่ชัดว่าข้อมูลถูกตีความไปที่ไหน .

ไม่ว่าในกรณีใด คุณควรจะสามารถแทนที่อักขระในการสืบค้น Postgres ของคุณได้โดยใช้ลำดับหลีก Unicode: E'\u200E'

person Nick Barnes    schedule 15.08.2019