Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
CODE PROJECT For Those Who Code
  • Home
  • Articles
  • FAQ
Community
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Testing if Unicode

Testing if Unicode

Scheduled Pinned Locked Moved C / C++ / MFC
testingbeta-testingquestion
22 Posts 9 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Rajesh R Subramanian

    I wish it were as simple as that. Try this:

    LPCWSTR str = L"कमल"; //If you see ???, then you don't have Indic fonts installed.
    BOOL b = false;
    b = IsTextUnicode(str, _tcslen(str), NULL);
    if(b)
    AfxMessageBox(L"Text is Unicode!");
    else
    AfxMessageBox(L"Boo!");

    I've worked extensively with Asian languages and I've never had this API to work reiably. I know the documentation kinda confesses it, but there has been no development on this at all!

    Richard MacCutchan wrote:

    char ascii[] = "The rain in Spain";

    Richard MacCutchan wrote:

    if (IsTextUnicode(ascii, sizeof ascii, NULL))

    Also, your example is flawed because you're wrongly passing the size of the pointer instead of passing the size of the buffer itself in bytes.

    Workout progress:
    Current arm size: 14.4in
    Desired arm size: 18in
    Next Target: 15.4in by Dec 2010

    Current training method: HIT

    N Offline
    N Offline
    Niklas L
    wrote on last edited by
    #12

    Rajesh R Subramanian wrote:

    Also, your example is flawed because you're wrongly passing the size of the pointer instead of passing the size of the buffer itself in bytes.

    No. Last time I checked:

    char ascii\[\] = "The rain in Spain";
    
    sizeof ascii == ::strlen(ascii) + 1
    

    home

    R 1 Reply Last reply
    0
    • R Rajesh R Subramanian

      I wish it were as simple as that. Try this:

      LPCWSTR str = L"कमल"; //If you see ???, then you don't have Indic fonts installed.
      BOOL b = false;
      b = IsTextUnicode(str, _tcslen(str), NULL);
      if(b)
      AfxMessageBox(L"Text is Unicode!");
      else
      AfxMessageBox(L"Boo!");

      I've worked extensively with Asian languages and I've never had this API to work reiably. I know the documentation kinda confesses it, but there has been no development on this at all!

      Richard MacCutchan wrote:

      char ascii[] = "The rain in Spain";

      Richard MacCutchan wrote:

      if (IsTextUnicode(ascii, sizeof ascii, NULL))

      Also, your example is flawed because you're wrongly passing the size of the pointer instead of passing the size of the buffer itself in bytes.

      Workout progress:
      Current arm size: 14.4in
      Desired arm size: 18in
      Next Target: 15.4in by Dec 2010

      Current training method: HIT

      H Offline
      H Offline
      Hans Dietrich
      wrote on last edited by
      #13

      I wonder what result you would get if the second param was number of bytes:

      LPCWSTR str = L"कमल"; //If you see ???, then you don't have Indic fonts installed.
      BOOL b = false;
      b = IsTextUnicode(str, _tcslen(str)*sizeof(WCHAR), NULL);

      Best wishes, Hans


      [Hans Dietrich Software]

      1 Reply Last reply
      0
      • R Rajesh R Subramanian

        I wish it were as simple as that. Try this:

        LPCWSTR str = L"कमल"; //If you see ???, then you don't have Indic fonts installed.
        BOOL b = false;
        b = IsTextUnicode(str, _tcslen(str), NULL);
        if(b)
        AfxMessageBox(L"Text is Unicode!");
        else
        AfxMessageBox(L"Boo!");

        I've worked extensively with Asian languages and I've never had this API to work reiably. I know the documentation kinda confesses it, but there has been no development on this at all!

        Richard MacCutchan wrote:

        char ascii[] = "The rain in Spain";

        Richard MacCutchan wrote:

        if (IsTextUnicode(ascii, sizeof ascii, NULL))

        Also, your example is flawed because you're wrongly passing the size of the pointer instead of passing the size of the buffer itself in bytes.

        Workout progress:
        Current arm size: 14.4in
        Desired arm size: 18in
        Next Target: 15.4in by Dec 2010

        Current training method: HIT

        A Offline
        A Offline
        Aescleal
        wrote on last edited by
        #14

        What pointer? Richard was taking the size of an array. Ash

        1 Reply Last reply
        0
        • R Rajesh R Subramanian

          I wish it were as simple as that. Try this:

          LPCWSTR str = L"कमल"; //If you see ???, then you don't have Indic fonts installed.
          BOOL b = false;
          b = IsTextUnicode(str, _tcslen(str), NULL);
          if(b)
          AfxMessageBox(L"Text is Unicode!");
          else
          AfxMessageBox(L"Boo!");

          I've worked extensively with Asian languages and I've never had this API to work reiably. I know the documentation kinda confesses it, but there has been no development on this at all!

          Richard MacCutchan wrote:

          char ascii[] = "The rain in Spain";

          Richard MacCutchan wrote:

          if (IsTextUnicode(ascii, sizeof ascii, NULL))

          Also, your example is flawed because you're wrongly passing the size of the pointer instead of passing the size of the buffer itself in bytes.

          Workout progress:
          Current arm size: 14.4in
          Desired arm size: 18in
          Next Target: 15.4in by Dec 2010

          Current training method: HIT

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #15

          This works: (apologies if that is not Hindi, and I hope it's a nice word!)

          WCHAR hindi[] = L"कमल";

          wcout << sizeof hindi << endl;

          if (IsTextUnicode(hindi, sizeof hindi, NULL))
          wcout << "It is Unicode" << endl;

          Note the result of the sizeof operator; sizeof arrayName gives size in bytes, which is the value required by the IsTextUnicode() function.

          It's time for a new signature.

          R 1 Reply Last reply
          0
          • L Lost User

            This works: (apologies if that is not Hindi, and I hope it's a nice word!)

            WCHAR hindi[] = L"कमल";

            wcout << sizeof hindi << endl;

            if (IsTextUnicode(hindi, sizeof hindi, NULL))
            wcout << "It is Unicode" << endl;

            Note the result of the sizeof operator; sizeof arrayName gives size in bytes, which is the value required by the IsTextUnicode() function.

            It's time for a new signature.

            R Offline
            R Offline
            Rajesh R Subramanian
            wrote on last edited by
            #16

            I must stop replying in the middle of the night. I overlooked it were size of an array. The word cannot be nicer, it means "Lotus". This probably means the API is now "improved"?! I'd be glad to go and test some of the old stuff that never worked. I'll keep you posted if they don't!

            Workout progress:
            Current arm size: 14.4in
            Desired arm size: 18in
            Next Target: 15.4in by Dec 2010

            Current training method: HIT

            L 1 Reply Last reply
            0
            • N Niklas L

              Rajesh R Subramanian wrote:

              Also, your example is flawed because you're wrongly passing the size of the pointer instead of passing the size of the buffer itself in bytes.

              No. Last time I checked:

              char ascii\[\] = "The rain in Spain";
              
              sizeof ascii == ::strlen(ascii) + 1
              

              home

              R Offline
              R Offline
              Rajesh R Subramanian
              wrote on last edited by
              #17

              Yes, yes, apologies. See my reply to Richard. :)

              Workout progress:
              Current arm size: 14.4in
              Desired arm size: 18in
              Next Target: 15.4in by Dec 2010

              Current training method: HIT

              N 1 Reply Last reply
              0
              • R Rajesh R Subramanian

                I must stop replying in the middle of the night. I overlooked it were size of an array. The word cannot be nicer, it means "Lotus". This probably means the API is now "improved"?! I'd be glad to go and test some of the old stuff that never worked. I'll keep you posted if they don't!

                Workout progress:
                Current arm size: 14.4in
                Desired arm size: 18in
                Next Target: 15.4in by Dec 2010

                Current training method: HIT

                L Offline
                L Offline
                Lost User
                wrote on last edited by
                #18

                Rajesh R Subramanian wrote:

                I must stop replying in the middle of the night.

                If it's any consolation I do this all the time in the middle of the day!

                It's time for a new signature.

                1 Reply Last reply
                0
                • R Rajesh R Subramanian

                  Yes, yes, apologies. See my reply to Richard. :)

                  Workout progress:
                  Current arm size: 14.4in
                  Desired arm size: 18in
                  Next Target: 15.4in by Dec 2010

                  Current training method: HIT

                  N Offline
                  N Offline
                  Niklas L
                  wrote on last edited by
                  #19

                  No worries, I consider it a typo :)

                  home

                  1 Reply Last reply
                  0
                  • H Hans Dietrich

                    Does anyone have a reliable implementation of IsTextUnicode()? I'm tired of dealing with it. All I can find on the internet are people complaining about it, but so far no better alternative. :(

                    Best wishes, Hans


                    [Hans Dietrich Software]

                    N Offline
                    N Offline
                    Nemanja Trifunovic
                    wrote on last edited by
                    #20

                    Michael Kaplan does not like IsTextUnicode either.[^]

                    utf8-cpp

                    V 1 Reply Last reply
                    0
                    • N Nemanja Trifunovic

                      Michael Kaplan does not like IsTextUnicode either.[^]

                      utf8-cpp

                      V Offline
                      V Offline
                      VeganFanatic
                      wrote on last edited by
                      #21

                      One other idea that comes to mind try { cout << mystring << endl; catch wcout << mystring << endl; }

                      http://www.contract-developer.tk

                      1 Reply Last reply
                      0
                      • R Rajesh R Subramanian

                        Man, that's shocking! I came here to ask the very same question. Please let me know if you find something useful (I'll do the same).

                        Workout progress:
                        Current arm size: 14.4in
                        Desired arm size: 18in
                        Next Target: 15.4in by Dec 2010

                        Current training method: HIT

                        T Offline
                        T Offline
                        ThatsAlok
                        wrote on last edited by
                        #22

                        Rajesh R Subramanian wrote:

                        Workout progress: Current arm size: 14.4in Desired arm size: 18in Next Target: 15.4in by Dec 2010

                        Thats Incredible :-)

                        "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
                        Never mind - my own stupidity is the source of every "problem" - Mixture

                        cheers, Alok Gupta VC Forum Q&A :- I/IV Support CRY- Child Relief and You

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • World
                        • Users
                        • Groups