我正在用另一個人發送給我的用戶數據導入csv文件。該文件在多人之間來回發送,與不同操作系統上的不同程序一起工作。所以發生了一些編碼問題,我發現沒有簡單方式來解決它(是的,我把文件轉換爲UTF-8等)。regexp_replace中的轉義字符串 - Postgresql和PHP
數據存儲在postgresql數據庫中,我找到了一種轉換破損字符的方法。
例如:
A \ u0088 \u009Aº= U
A \ u0088 \u009A§= A
A \ u0088 \u009Aâ\ u0088 \ u0082 = O
...
在PSQL我用以下語句轉換â\u0088\u009Aº
到ü
:
SELECT COUNT(*) FROM sbl_students WHERE lastname ~* E'.*â\\u0088\\u009Aº.*';
=> 61
UPDATE sbl_students SET lastname = regexp_replace(lastname, E'â\\u0088\\u009Aº', 'ü', 'g');
SELECT COUNT(*) FROM sbl_students WHERE lastname ~* E'.*â\\u0088\\u009Aº.*';
=> 0
我試圖實現這個成PHP腳本,但由於某種原因,這是行不通的。 沒有被替換,並且沒有錯誤發生。
$dbh = pg_connect("dbname=iserv user=sbl");
$query = "UPDATE sbl_students SET lastname = regexp_replace(lastname, E'â\\u0088\\u009Aº', 'ü', 'g');";
pg_query($dbh, $query);
pg_close($dbh);
我已經嘗試過多種變化像regexp_replace(lastname, E'â\u0088\u009Aº', 'ü', 'g')
或regexp_replace(lastname, 'â\u0088\u009Aº', 'ü', 'g')
但其中的非工作。
有人可以幫我嗎?我不明白爲什麼查詢在psql中工作得很好,但是在php中沒有做任何事情。
謝謝!
PostgreSQL的8.4
PHP 5.3.3-7 + squeeze16用了Suhosin貼片(CLI)
謝謝您的回答,但我正在尋找一個SQL的解決方案。 –