Re: Multibyte char encoding atttypmod weirdness
От | Huaxin WANG |
---|---|
Тема | Re: Multibyte char encoding atttypmod weirdness |
Дата | |
Msg-id | 069301c2dd4e$5787cb60$a800a8c0@lihlii обсуждение исходный текст |
Ответ на | Multibyte char encoding atttypmod weirdness ("Huaxin WANG" <wanghx@netspeed-tech.com>) |
Список | pgsql-bugs |
Sorry but I made a mistake in describing the problem. PQfmod(...) returns 20 + 4, but strlen(PQgetvalue(...)) returns something varying, more than 24. Since you said atttypmod is char len + 4, "The actual physical length in bytes of a column entry might be more", it's dependant to the current locale settings and multibyte/wide char related functions should be used to calculate the byte length. Is there a simple and direct way to know this byte lenght through libpq API? I will try to figure it out. Thank you very much for you informative and helpful reply. ----- Original Message ----- From: "Tom Lane" <tgl@sss.pgh.pa.us> To: "Huaxin WANG" <wanghx@netspeed-tech.com> Cc: <pgsql-bugs@postgresql.org> Sent: Monday, February 24, 2003 11:07 PM Subject: Re: [BUGS] Multibyte char encoding atttypmod weirdness > "Huaxin WANG" <wanghx@netspeed-tech.com> writes: > > When locale is set to multibyte char encoding languages, > > such as ja_JP.eucjp, and char encoding set to EUC_JP, for the char(20) > > columns (attributes), the libpq ((PGresult *)res)->attDescs[0].atttypmod > > returned by PQfmod(res, 0) is not correct. It's neither 20, nor 20+4 as > > reported in the hackers' mail list [1], but something varying (which I > > failed > > to figure out). In my specific case, it's 25. > > I don't think so. A column declared as char(N) *will* have an atttypmod > of N+4. The actual physical length in bytes of a column entry might > be more, though, since we measure N in terms of characters not bytes. > > regards, tom lane >
В списке pgsql-bugs по дате отправления: