Excellent - this seems to be the issue - the show create table shows : mysql> show create table a\g +-------+----------------------------------------------------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------------------------+ | a | CREATE TABLE `a` ( `blah` char(20) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 | +-------+-----------
So - its utf8 (which I understand enough about to understand why its doing what its doing!) So - the next question is... Is there anyway in code I can find the 'fiddle' factor (1,3,or now possibly 4) that I need to use to divide by to get back to the character width specified in the CREATE TABLE ? On Tuesday 07 October 2008 12:07:28 Joerg Bruehe wrote: > Hi Mike, all, > > Mike Aubury wrote: > > I'm probably being a bit stupid - but I'm trying to determine (in code) > > the length of the string in the schema for a given table. > > > > So - for example : > > > > > > create table a ( > > blah char(20) > > ) > > > > > > I want to return '20', but I'm getting '60' when I use > > mysql_list_fields.. (Always seems to be 3x longer that I'm expecting)... > > > > Am I missing something ? (or should I just divide by 3!!) > > You are missing the distinction between "character" and byte, which is > brought to you by the ISO character sets which go far beyond ASCII. > > The moment you allow international characters (US-ASCII + German Umlauts > + French accented vowels + Spanish cedilla + ... + Chinese + Korean + > ...) in your data, storing one character may need more than one byte. > > The current encoding (versions 5.0 and 5.1) uses up to 3 bytes per > character, that is the factor 3 you notice. > With 6.0, a different encoding may be used, which uses up to 4 bytes per > character. > > If you know you won't need arbitrary characters, you can use the > "charset" (or "character set") option in your "create" statements. > > > HTH, > Jörg > > -- > Joerg Bruehe, MySQL Build Team, [EMAIL PROTECTED] (+49 30) 417 01 487 > Sun Microsystems GmbH, Sonnenallee 1, D-85551 Kirchheim-Heimstetten > Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer > Vorsitzender des Aufsichtsrates: Martin Haering Muenchen: HRB161028 -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]