in reply to Re: Substituting unicode character leaves special block
in thread Substituting unicode character leaves special block

You might want to clarify the encoding of your example. You do not use utf8;, yet you have a literal 'µ'. So, if you have an editor which saves this as UTF-8, then $micro is a string of two characters, and your substitution replaces the very same two characters with an u. This is what I'd call "works by accident".

To make it more interesting, your code contains the HTML escape &956; which is GREEK SMALL LETTER MU and not the MICRO SIGN, &b2; from the question. These look pretty much the same, but are different characters. Your GREEK SMALL LETTER MU can not be represented in Perl's default character set!

  • Comment on Re^2: Substituting unicode character leaves special block

Replies are listed 'Best First'.
Re^3: Substituting unicode character leaves special block
by hippo (Archbishop) on Mar 18, 2023 at 12:11 UTC
    You might want to clarify the encoding of your example.

    A fair point: it is utf-8. But I don't think that matters overly because ...

    You do not use utf8;, yet you have a literal 'µ'. So, if you have an editor which saves this as UTF-8, then $micro is a string of two characters, and your substitution replaces the very same two characters with an u. This is what I'd call "works by accident".

    If it works by accident then it does so deliberately :-) What I have tried to demonstrate here is that you can substitute a given symbol in code simply with a regex. But of course this depends entirely on where your string/corpus comes from, how it's encoded (or not) and how the pattern is constructed. Our anonymous OP has only provided the last of these, so it becomes guesswork in regards to what they are really doing.

    And you are right about the difference between the mu and micro characters in unicode. I rarely type the micro symbol - much more frequently I write it by hand where I use a mu and always have done. The difference (to me, anyway) is a semantic one rather than a typographical one. I probably should have used µ in the example instead of μ - mea culpa.


    🦛

      > And you are right about the difference between the mu and micro characters in unicode.

      There was not much discussion about the xBC so far, which represents ¼ , but it seems to me the OP actually wanted x03BC for μ

      In HTML ¼ μ -> ¼ μ

      > so it becomes guesswork in regards to what they are really doing.

      well yeah, but probably he deserves to keep maintaining broken code?

      Cheers Rolf
      (addicted to the 𐍀𐌴𐍂𐌻 Programming Language :)
      Wikisyntax for the Monastery

Re^3: Substituting unicode character leaves special block
by LanX (Saint) on Mar 17, 2023 at 22:25 UTC
    I agree that use utf8; would be better.

    > which saves this as UTF-8, then $micro is a string of two characters,

    don't you mean one character encoded with 2 bytes? °

    > To make it more interesting

    the most interesting thing is that he wisely used pre-tags and not code-tags, because code-sections here fail with utf-8 characters ... :/

    update

    °) OK, you mean when Perl loads this file, it will interpret the 2 bytes as 2 random characters, because use utf8 is missing. Yes!

    Cheers Rolf
    (addicted to the 𐍀𐌴𐍂𐌻 Programming Language :)
    Wikisyntax for the Monastery