Thank you for your reply. I will check if there is any function below char_length that is realized by icu_ext.
substring|trim|btrim|left |lpad|ltrim|regexp_match|regexp_matches |regexp_replace|regexp_split_to_array|regexp_split_to_table |replace|reverse|right|rpad|rtrim|split_part|strpos|substr|starts_with Best regards, -----Original Message----- From: Daniel Verite <dan...@manitou-mail.org> Sent: Wednesday, June 1, 2022 6:46 PM To: Thomas Munro <thomas.mu...@gmail.com> Cc: 荒井元成 <n2...@ndensan.co.jp>; Peter Eisentraut <peter.eisentr...@enterprisedb.com>; PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org> Subject: Re: Unicode Variation Selector and Combining character Thomas Munro wrote: > Looking around a bit, it might be interesting to check if the > icu_character_boundaries() function in Daniel Vérité's icu_ext treats > IVSs as single grapheme clusters. It does. with strings(s) as ( values (U&'\+0066FE' || U&'\+0E0103'), (U&'\+00304B' || U&'\+00309A') ) select s, octet_length(s), char_length(s), (select count(*) from icu_character_boundaries(s,'en')) as graphemes from strings; s | octet_length | char_length | graphemes -----+--------------+-------------+----------- 曾󠄃 | 7 | 2 | 1 か゚ | 6 | 2 | 1 Best regards, -- Daniel Vérité https://postgresql.verite.pro/ Twitter: @DanielVerite