![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
So, we either don't support utf-8 on BSDs |
#3
| |||
| |||
|
|
correct utf-8 byte sequence is 0xd18231, so it looks like we call tolower() somewhere on parts of multibyte characters, and it does the same as isspace() - it interprets it's argument as wide character, and converts it. |
#4
| |||
| |||
|
|
correct utf-8 byte sequence is 0xd18231, so it looks like we call tolower() somewhere on parts of multibyte characters, and it does the same as isspace() - it interprets it's argument as wide character, and converts it. Indeed, and I am certainly wondering why we should not just say that you've got a broken locale definition there. There is absolutely no doubt that the ctype.h functions are defined to work on char, not wchar. |
|
They have no business mangling high-bit-set bytes in a multibyte encoding. |
#5
| |||
| |||
|
|
Agreed, but such corruption indicates that there is non-multibyte-safe (octet-wise) case conversion somewhere, at best (with fully working locale) it will cause case conversion to do nothing instead of actual conversion. |
#6
| |||
| |||
|
|
Agreed, but such corruption indicates that there is non-multibyte-safe (octet-wise) case conversion somewhere, at best (with fully working locale) it will cause case conversion to do nothing instead of actual conversion. Yours is the first installation I've heard of that fails to get this right, and the code in question (downcase_truncate_identifier) has been like that since PG 7.4.something ... |
![]() |
| Thread Tools | |
| Display Modes | |
| |