Unexpected length of £ (pound) character?

Discussion in 'Ruby' started by Anthony Ss, Jun 4, 2010.

  1. Anthony Ss

    Anthony Ss Guest

    Hi,

    Today I came across an issue with a customer custom report which was out
    by 1 char over 40 or so lines. At first thought I had incorrectly
    limited the field length, however the problem is only present where
    there is a '£' char.

    For example:
    "1234".length => 4
    "1234£".length => 6 (Expect 5)
    "1234£6".length => 7 (Expect 6)

    Tested on:
    ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
    and:
    ruby 1.8.6 (2009-03-31 patchlevel 368) [x86_64-linux]

    I could not find anything in google covering this (Perhaps my google-fu
    needs work) which brought me here.

    Is this expected functionality in ruby? It does not seem right in my
    mind.

    Thanks. :)
    --
    Posted via http://www.ruby-forum.com/.
     
    Anthony Ss, Jun 4, 2010
    #1
    1. Advertising

  2. Anthony Ss

    botp Guest

    On Fri, Jun 4, 2010 at 6:19 PM, Anthony Ss
    <> wrote:
    > For example:
    > =A0"1234".length =3D> 4
    > =A0"1234=A3".length =3D> 6 (Expect 5)
    > =A0"1234=A36".length =3D> 7 (Expect 6)


    can't help you there, but fyi

    > RUBY_VERSION

    =3D> "1.9.2"
    > "1234".length

    =3D> 4
    > "1234=A3".length

    =3D> 5
    > "1234=A36".length

    =3D> 6

    kind regards -botp
     
    botp, Jun 4, 2010
    #2
    1. Advertising

  3. Anthony Stenhouse wrote:
    > Hi,
    >
    > Today I came across an issue with a customer custom report which was out
    > by 1 char over 40 or so lines. At first thought I had incorrectly
    > limited the field length, however the problem is only present where
    > there is a '£' char.
    >
    > For example:
    > "1234".length => 4
    > "1234£".length => 6 (Expect 5)
    > "1234£6".length => 7 (Expect 6)


    In UTF-8, "£" is two bytes, and ruby 1.8 gives you the number of bytes.

    If you want to capture (say) the first 6 characters of the string, try
    this:

    >> a = "1234£6789"

    => "1234\302\2436789"
    >> a =~ /\A(.{6})/u

    => 0
    >> puts $1

    1234£6
    => nil

    This may be sufficient for simple wrapping functions. Or look at the
    Iconv library.

    > Is this expected functionality in ruby? It does not seem right in my
    > mind.


    ruby 1.9 works in characters. It brings with it enormous complexity,
    pitfalls and inconsistencies. Pick your poison :)
    --
    Posted via http://www.ruby-forum.com/.
     
    Brian Candler, Jun 4, 2010
    #3
  4. Anthony Ss

    MrZombie Guest

    Re: Unexpected length of £ (pound) character?

    On 2010-06-04 06:19:09 -0400, Anthony Ss said:

    > Hi,
    >
    > Today I came across an issue with a customer custom report which was out
    > by 1 char over 40 or so lines. At first thought I had incorrectly
    > limited the field length, however the problem is only present where
    > there is a '£' char.
    >
    > Is this expected functionality in ruby? It does not seem right in my
    > mind.
    >
    > Thanks. :)


    Do yourself a favor, friend, and read this excellent article on
    Character Encoding:

    http://www.joelonsoftware.com/articles/Unicode.html

    Then, find out if the character encoding for your file and your
    interpreter is the same. :p
    --
    Thank you for your brain.
    -MrZombie
     
    MrZombie, Jun 4, 2010
    #4
  5. Anthony Ss

    botp Guest

    On Fri, Jun 4, 2010 at 6:47 PM, Brian Candler <> wrote:
    > If you want to capture (say) the first 6 characters of the string, try
    >>> a =3D "1234=A36789"

    > =3D> "1234\302\2436789"
    >>> a =3D~ /\A(.{6})/u

    > =3D> 0
    >>> puts $1

    > 1234=A36
    > =3D> nil


    >"1234=A36789"[0..5]

    =3D> "1234=A36"

    > ruby 1.9 works in characters. It brings with it enormous complexity,
    > pitfalls and inconsistencies. Pick your poison :)


    All programmers are optimists. -Frederick Brooks, Jr.

    ;-)

    kind regards -botp
     
    botp, Jun 4, 2010
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Andrew

    Global pound define?

    Andrew, Jul 14, 2003, in forum: ASP .Net
    Replies:
    1
    Views:
    458
    Craig Deelsnyder [MVP]
    Jul 15, 2003
  2. Jerry III

    Re: Pound Sign in text emails

    Jerry III, Oct 15, 2003, in forum: ASP .Net
    Replies:
    0
    Views:
    4,491
    Jerry III
    Oct 15, 2003
  3. Chris
    Replies:
    2
    Views:
    909
    Chris
    Jul 15, 2004
  4. =?Utf-8?B?bTAwbm0wbmtleQ==?=

    streamreader will not read UK pound sign!!!

    =?Utf-8?B?bTAwbm0wbmtleQ==?=, Nov 21, 2005, in forum: ASP .Net
    Replies:
    6
    Views:
    5,269
  5. =?Utf-8?B?TGFycnk=?=
    Replies:
    2
    Views:
    642
    =?Utf-8?B?TGFycnk=?=
    Jan 2, 2006
Loading...

Share This Page