PostgreSQL Melarikan Diri dari Karakter Khusus Microsoft Dalam Kueri Pilihan

PostgreSQL, DBvisualizer, dan Tenaga Penjualan

Saya memilih catatan dari tabel database dan mengekspornya ke file csv: dipisahkan koma dan dikodekan UTF8. Saya mengirimkan file ke pengguna yang mengunggah data ke Saleforce. Saya tidak mengenal Salesforce, jadi saya sama sekali tidak tahu apa-apa tentang hal ini. Dia melaporkan bahwa beberapa data dalam file tersebut muncul sebagai karakter omong kosong (bukan UTF8) (lihat di bawah).

Tampaknya beberapa pengguna kami menyalin/menempelkan email ke formulir web yang kemudian memasukkannya ke dalam db kami. Tanggal dari header email (saya yakin) adalah teks yang ditampilkan sebagai omong kosong.

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

menjadi

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

Teks di kolom db terlihat normal. Saat itulah diekspor ke file csv dan kemudian file tersebut dilihat di editor teks seperti Wordpad atau Salesforce. Kemudian dia melihat karakter aneh.

Ini hanya terjadi dengan tanggal dari teks yang disalin/ditempel ke formulir/db. Saya tidak tahu bagaimana, atau apakah ada cara, menghilangkan karakter "tak terlihat" ini.

Itu adalah tiga karakter yang sama setiap kali: ‎ Saya melakukan regex_replace() pada ini untuk menghapusnya, tetapi tidak berhasil. Saya pikir karena mereka tidak terlihat di bidang db, regex melihatnya.

Sepertinya meskipun saya tidak dapat melihat karakter ini, karakter tersebut pasti ada di sana dalam beberapa bentuk yang membuatnya ditampilkan di editor teks seperti Wordpad atau klien Salesforce setelah diekspor ke csv.

Saya mungkin dapat melakukan pencarian/penemuan/penggantian massal di editor teks, tetapi alangkah baiknya melakukan ini di sql dan menghindari langkah ekstra setiap saat.

Berharap seseorang telah melihat ini dan mengetahui perbaikan yang mudah.

Terima kasih atas ide atau petunjuk yang mungkin bisa membantu.


person John Cowan    schedule 14.08.2019    source sumber


Jawaban (1)


Urutan ‎ adalah tanda kiri ke kanan, yang dikodekan dalam UTF- 8 (sebagai 0xE2 0x80 0x8E), namun dibaca seolah-olah berada di Windows-1252.

Tanda dari kiri ke kanan tidak terlihat, jadi fakta bahwa Anda tidak dapat melihatnya di database menunjukkan bahwa tanda tersebut dikodekan dengan benar, namun tanpa mengetahui secara pasti jalur mana yang diambil data setelahnya, sulit untuk menebak dengan tepat di mana tanda tersebut disalahartikan. .

Bagaimanapun, Anda harus dapat mengganti karakter dalam kueri Postgres Anda dengan menggunakan urutan escape Unicode: E'\u200E'

person Nick Barnes    schedule 15.08.2019