スコットランド語とウェールズ語のアクセント付きの地名 (グレイブ、アキュート、サーカムフレックス、ダイアレスを組み合わせたもの) が多数あり、それらを Unicode 正規化形式に更新する必要があります。たとえば、á
0061 + 0301 ( \x61\x301)
pl/python を使用して、2009 年からの古い Postgres nabble メールリストから解決策を見つけました。
create or replace function unicode_normalize(str text) returns text as $$
import unicodedata
return unicodedata.normalize('NFC', str.decode('UTF-8'))
$$ LANGUAGE PLPYTHONU;
これは期待どおりに機能しますが、組み込みの Postgres 関数を使用して直接実行する方法があるかどうか疑問に思いました。convert_to を使用してさまざまな変換を試みましたが、すべて無駄でした。
編集:クレイグが指摘したように、私が試したことの1つ:
SELECT convert_to(E'\u00E1', 'iso-8859-1');
を返しますが\xe1
、
SELECT convert_to(E'\u0061\u0301', 'iso-8859-1');
で失敗しますERROR: character 0xcc81 of encoding "UTF8" has no equivalent in "LATIN1"