2016-11-07 52 views
0

我正在使用編碼在SQL ASCII中的Postgres數據庫。字符編碼SQL ASCII到UTF-8損壞

使用node.js,使用pg package,我正在請求一些行,其中可能包含重音符。

當我從我的瀏覽器中希望顯示的原始數據,我放入系統損壞的字符:
enter image description here

我曾試圖與一些UTF-8編碼發送數據,但有同一個問題:
enter image description here

下面的代碼:

<html> 
<meta charset="UTF-8"> 
<body>1 all�e Carl Faberg�</body></html> 

的開發工具也一樣,不顯示THI性格:
enter image description here

使用pgAdmin的軟件,探索數據庫,我沒有任何問題:
enter image description here

對我來說,似乎這個問題是由Node.js的到來,但我不我不知道我有什麼解決方案。

你有什麼想法我可以解決這個問題嗎?
謝謝

回答

1

您不應該使用SQL_ASCII數據庫編碼,因爲這種方式PostgreSQL不關心編碼,也不會將字符串轉換爲正確的客戶端編碼。

使用SQL_ASCII,將字符轉換爲正確的編碼(可能是UTF-16,因爲您使用的是Javascript)的負擔取決於應用程序,因此您必須自己編寫轉換,或許使用Buffer

首先,您必須瞭解實際存儲數據庫中字符的編碼方式。您可以通過以下方式將字符串強制轉換爲bytea來查找存儲在數據庫中的字節:

test=> SELECT 'allée Carl Fabergé'::bytea; 
┌────────────────────────────────────────────┐ 
│     bytea     │ 
├────────────────────────────────────────────┤ 
│ \x616c6cc3a965204361726c20466162657267c3a9 │ 
└────────────────────────────────────────────┘ 
(1 row)