在PostgreSQL数据库中恢复并替换为UTF-8的Win1252内容
#postgres #database #unicode

我不应该是第一个需要从Windows上安装的PostgreSQL数据库中导出数据,并使用Win1252代码带有UTF-8代码的数据库(在我的情况下,在Linux Server上)。

不足以将传输文件转换为UTF-8,因为Win1252的字符(左double Quote,右double Quote,single Quote and Dash)将在您的数据库中具有怪异的值。

根据我的经验,我必须按原样导入数据,然后使用该函数执行更新以正确重写UTF-8字符的数据。

以下代码示例是:1-转换为HTML字符; 2-转换为单个字符。

HTML (https://gist.github.com/rafaelbernard/1029869)

-- DROP FUNCTION substitui_win1252_html(texto);

CREATE OR REPLACE FUNCTION substitui_win1252_html(texto text)
    RETURNS text AS
$$
BEGIN

    texto := replace(replace(replace(replace(replace(texto, '’', '’'), '“', '“'), '”', '”'), '•','•'), '–', '–')::text; 
    RETURN texto;

END;
$$
LANGUAGE plpgsql;

Simple (https://gist.github.com/rafaelbernard/1029899)

- DROP FUNCTION substitui_win1252(texto);

CREATE OR REPLACE FUNCTION substitui_win1252(texto text)
    RETURNS text AS
$$
BEGIN

    texto := replace(replace(replace(replace(replace(texto, '’', ''''), '“', '"'), '”', '"'), '•','•'), '–', '-')::text;  
    RETURN texto;

END;
$$
LANGUAGE plpgsql;

不必担心您可能看到的正方形。如果您将其复制到一个好的文本编辑器,则将其实际价值。