我们有一个 Postgresql 数据库,其中数据在 Latin1 中。显然有人将一些 UTF8 编码的数据加载到其中,因为当我从某些列中选择数据时,我得到如下内容:
SELECT symptoms from client
- -
"huvudvärke"
- -
Run Code Online (Sandbox Code Playgroud)
其中“ä”应该是“ä”。我可以用替换来处理它,即:
UPDATE client SET symptoms=replace(symptoms, 'ä', 'ä');
Run Code Online (Sandbox Code Playgroud)
我尝试了几个我找到的解决方案,比如使用convert和 ,convert_to但这使数据看起来像"huvudv\303\244rke".
我的问题有现有的解决方案吗?
编辑:
SELECT symptoms, symptoms::bytea from client
- -
"huvudvärke";"huvudv\303\203\302\244rke"
- -
Run Code Online (Sandbox Code Playgroud)
在上面的 UPDATE 之后,查询症状::bytea 输出:
SELECT symptoms, symptoms::bytea from client
- -
"huvudvärke";"huvudv\303\244rke"
- -
Run Code Online (Sandbox Code Playgroud)
编辑2:
select version();
"PostgreSQL 9.2.9, compiled by Visual C++ build 1600, 64-bit"
show client_encoding; --I'm using pgAdmin III 1.18.1
"UNICODE"
show server_encoding;
"UTF8" …Run Code Online (Sandbox Code Playgroud) 我怎么能选择所有的n-grams,即。使用 SQL 从字符串中提取长度为n 的子字符串?例如,3-克串的例子是EXA,XAM,安培,MPL,PLE。
为了更精确,我使用 PostgreSQL。