Обсуждение: BUG #5903: Turkish encoding problem
The following bug has been logged online: Bug reference: 5903 Logged by: Sarp Akal Email address: sarp@dms-tech.com PostgreSQL version: 9.0.2 Operating system: Windows Server 2008 R2 x64 Description: Turkish encoding problem Details: The server is setup for UTF8 encoding and collation and character type are Turkish_Turkey.1254 The following code fails: select lower('İ') --> Lowercase of turkish capital I-with dot returns exactly the same character. select upper('ı') --> Uppercase of turkish small i-without dot returns exactly the same character. select lower('I') --> Lowercase of turkish capital I returns i where it should be i-without dot. select upper('i') --> Uppercase of turkish small returns I where it should be I-with dot.
On Tue, Mar 1, 2011 at 1:59 AM, Sarp Akal <sarp@dms-tech.com> wrote: > > The following bug has been logged online: > > Bug reference: =C2=A0 =C2=A0 =C2=A05903 > Logged by: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Sarp Akal > Email address: =C2=A0 =C2=A0 =C2=A0sarp@dms-tech.com > PostgreSQL version: 9.0.2 > Operating system: =C2=A0 Windows Server 2008 R2 x64 > Description: =C2=A0 =C2=A0 =C2=A0 =C2=A0Turkish encoding problem > Details: > > The server is setup for UTF8 encoding and collation and character type are > Turkish_Turkey.1254 > > The following code fails: > > select lower('=C4=B0') =C2=A0--> Lowercase of turkish capital I-with dot = returns > exactly the same character. > > select upper('=C4=B1') =C2=A0--> Uppercase of turkish small i-without dot= returns > exactly the same character. > > select lower('I') =C2=A0--> Lowercase of turkish capital I returns i wher= e it > should be i-without dot. > > select upper('i') =C2=A0--> Uppercase of turkish small returns I where it= should > be I-with dot. I might be wrong about this, but I think this behavior is determined by the operating system behavior of the locale you've selected, and we just believe whatever the OS says. --=20 Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
V2hlbiB3ZSBydW4gYW4gYXBwbGljYXRpb24gb24gdGhlIHNhbWUgbWFjaGlu ZSAmIE9TLCBhcHBsaWNhdGlvbidzIGxvd2VyIGFuZCB1cHBlciBmdW5jdGlv bnMgcmVzdWx0cyBhcmUgY29ycmVjdCBidXQgUG9zdGdyZVNRTCBkb2VzIG5v dCBiZWhhdmUgc2ltaWxhci4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCkZyb206IFJvYmVydCBIYWFzIFttYWlsdG86cm9iZXJ0bWhhYXNAZ21h aWwuY29tXSANClNlbnQ6IFRodXJzZGF5LCBNYXJjaCAwMywgMjAxMSA4OjMy IFBNDQpUbzogRE1TIFRlY2gsIFNhcnANCkNjOiBwZ3NxbC1idWdzQHBvc3Rn cmVzcWwub3JnDQpTdWJqZWN0OiBSZTogW0JVR1NdIEJVRyAjNTkwMzogVHVy a2lzaCBlbmNvZGluZyBwcm9ibGVtDQoNCk9uIFR1ZSwgTWFyIDEsIDIwMTEg YXQgMTo1OSBBTSwgU2FycCBBa2FsIDxzYXJwQGRtcy10ZWNoLmNvbT4gd3Jv dGU6DQo+DQo+IFRoZSBmb2xsb3dpbmcgYnVnIGhhcyBiZWVuIGxvZ2dlZCBv bmxpbmU6DQo+DQo+IEJ1ZyByZWZlcmVuY2U6IMKgIMKgIMKgNTkwMw0KPiBM b2dnZWQgYnk6IMKgIMKgIMKgIMKgIMKgU2FycCBBa2FsDQo+IEVtYWlsIGFk ZHJlc3M6IMKgIMKgIMKgc2FycEBkbXMtdGVjaC5jb20NCj4gUG9zdGdyZVNR TCB2ZXJzaW9uOiA5LjAuMg0KPiBPcGVyYXRpbmcgc3lzdGVtOiDCoCBXaW5k b3dzIFNlcnZlciAyMDA4IFIyIHg2NA0KPiBEZXNjcmlwdGlvbjogwqAgwqAg wqAgwqBUdXJraXNoIGVuY29kaW5nIHByb2JsZW0NCj4gRGV0YWlsczoNCj4N Cj4gVGhlIHNlcnZlciBpcyBzZXR1cCBmb3IgVVRGOCBlbmNvZGluZyBhbmQg Y29sbGF0aW9uIGFuZCBjaGFyYWN0ZXIgdHlwZSBhcmUNCj4gVHVya2lzaF9U dXJrZXkuMTI1NA0KPg0KPiBUaGUgZm9sbG93aW5nIGNvZGUgZmFpbHM6DQo+ DQo+IHNlbGVjdCBsb3dlcignxLAnKSDCoC0tPiBMb3dlcmNhc2Ugb2YgdHVy a2lzaCBjYXBpdGFsIEktd2l0aCBkb3QgcmV0dXJucw0KPiBleGFjdGx5IHRo ZSBzYW1lIGNoYXJhY3Rlci4NCj4NCj4gc2VsZWN0IHVwcGVyKCfEsScpIMKg LS0+IFVwcGVyY2FzZSBvZiB0dXJraXNoIHNtYWxsIGktd2l0aG91dCBkb3Qg cmV0dXJucw0KPiBleGFjdGx5IHRoZSBzYW1lIGNoYXJhY3Rlci4NCj4NCj4g c2VsZWN0IGxvd2VyKCdJJykgwqAtLT4gTG93ZXJjYXNlIG9mIHR1cmtpc2gg Y2FwaXRhbCBJIHJldHVybnMgaSB3aGVyZSBpdA0KPiBzaG91bGQgYmUgaS13 aXRob3V0IGRvdC4NCj4NCj4gc2VsZWN0IHVwcGVyKCdpJykgwqAtLT4gVXBw ZXJjYXNlIG9mIHR1cmtpc2ggc21hbGwgcmV0dXJucyBJIHdoZXJlIGl0IHNo b3VsZA0KPiBiZSBJLXdpdGggZG90Lg0KDQpJIG1pZ2h0IGJlIHdyb25nIGFi b3V0IHRoaXMsIGJ1dCBJIHRoaW5rIHRoaXMgYmVoYXZpb3IgaXMgZGV0ZXJt aW5lZA0KYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gYmVoYXZpb3Igb2YgdGhl IGxvY2FsZSB5b3UndmUgc2VsZWN0ZWQsIGFuZCB3ZQ0KanVzdCBiZWxpZXZl IHdoYXRldmVyIHRoZSBPUyBzYXlzLg0KDQotLSANClJvYmVydCBIYWFzDQpF bnRlcnByaXNlREI6IGh0dHA6Ly93d3cuZW50ZXJwcmlzZWRiLmNvbQ0KVGhl IEVudGVycHJpc2UgUG9zdGdyZVNRTCBDb21wYW55DQoNCg0K
On Wed, 2011-06-01 at 09:52 +0000, DMS Tech, Sarp wrote: > When we run an application on the same machine & OS, application's > lower and upper functions results are correct but PostgreSQL does not > behave similar. Upgrade to *nix. I have heard several similar complaints on Windows. All recent (7 years and up) glibc releases have proper tr_TR.UTF-8 support. -- Devrim GÜNDÜZ Principal Systems Engineer @ EnterpriseDB: http://www.enterprisedb.com PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer Community: devrim~PostgreSQL.org, devrim.gunduz~linux.org.tr http://www.gunduz.org Twitter: http://twitter.com/devrimgunduz
2011/6/1 Devrim G=DCND=DCZ <devrim@gunduz.org>: > On Wed, 2011-06-01 at 09:52 +0000, DMS Tech, Sarp wrote: >> When we run an application on the same machine & OS, application's >> lower and upper functions results are correct but PostgreSQL does not >> behave similar. > > Upgrade to *nix. I have heard several similar complaints on Windows. All > recent (7 years and up) glibc releases have proper tr_TR.UTF-8 support. That's not really much of an answer, since the OP claimed that this wasn't happening in other applications that use that locale on the same machine. It's possible that we're calling the wrong locale-aware functions on Windows, or just different ones, but I wouldn't even know where to start looking for that sort of problem. --=20 Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company