Saving Hex A0 ( non-breake space ) in DB

Author: dammie@seznam.cz (dammie)

Hello,

I have defined column varchar18 in db (in model String VC18). I am trying import txt file via form in Uniface and save data into this db column.

There is text comming "2000-2001/ABCD XL " in Hex (323030302D323030312F4D54504C20584CA0). Lenght of this text is 18, but after store I ve got $error 0120  Error on field field ; subfield too large.

I think there is problem with last symbol ( Hex A0 = Non-break space? ). If I replace it with simply " " ( Hex 20 ) import is working without errors. (I can save this text also if I delete TWO (!) other chars e.g. if I save "00-2001/ABCD XL " )

Any comments? Why I cannot save Non-break space as simple char. I need extra space (2 another chars) in DB or it is uniface that is interperting symbol " " ( Hex A0 ) as 3 symbols?


 

4 Comments

  1. Hi dammie,

    diacriticals and non-printable characters are stored internally as 3byte sequences.
    Therefore the subfield is longer than the nunber of characters.

    Just an experiment: take a C20 field and fill it with 20 7bit charactes and replace one with umlauts etc.
    You can see the too long error raising; even with 11 umlauts.

    Success, Uli

    -- Ulrich Merkel --
    ulrichmerkel@web.de
    +49(69)317881


    Author: ulrich-merkel (ulrichmerkel@web.de)
  2. Hi Uli,

    thanks for your response. And this is uniface or database (I am running Sybase) interpretation? I searched uniface library help 9.2.01 and cannot find any info about it....

    and another thing e.g. if I crate table

    create table #t ( text varchar(5) )

    insert #t values( "ëëëëëëëëëëëëëëëëëëëë" )

    select * from #t

    text

    ----

    ëëëëë

     

    This is OK 5 characters fits... So Sybase has no problem with umlauts.


    Author: dammie (dammie@seznam.cz)
  3. Hi dammie,

    AFAIK it's the uniface interpretation (because the error is raised in uniface kernel).

    If you look into an older reference guide, there are some hints about the internal storage for different fonts and non-printable characters.

    The rest is the wisdom of the elders.

    Success, Uli


    Author: ulrich-merkel (ulrichmerkel@web.de)
  4. And another thing...

    1)if I removed first two chars in file and loaded file via uniface form into db...

    select * from table

     

     

     

    00-2001/MTPL XL (there is non-break space at the end, presented as square)

     

    2) I replaced non-break space in file with umlauf and loaded file via uniface from into db (there was NO error sub-field too large during store/e table)

    select * from table

    2000-2001/MTPL XLë  (we see non-break space at the and replaced with ë and it fits OK )

     

     


    Author: dammie (dammie@seznam.cz)