Finden Sie nicht-ascii-Zeichen aus einem UTF-8 string

Ich muss die nicht-ASCII-Zeichen aus einer UTF-8-string.

mein Verständnis:
UTF-8 ist eine Obermenge der Zeichen-Codierung, in denen 0-127 ascii-Zeichen.
Also, wenn in einem UTF-8-string , ein-Zeichen-Wert Nicht zwischen 0 und 127, dann ist es kein ascii-Zeichen , richtig? Bitte korrigieren Sie mich wenn ich bin falsch hier.

Auf dem oben genannten Verständnis ich geschrieben habe folgenden code in C :

Hinweis:
Ich bin mit der Ubuntu-gcc-compiler, um zu laufen C code

utf-string ist x√ab c

long i;
    char arr[] = "x√ab c";
    printf("length : %lu \n", sizeof(arr));
        for(i=0; i<sizeof(arr); i++){

        char ch = arr[i];
        if (isascii(ch))
             printf("Ascii character %c\n", ch);
              else
             printf("Not ascii character %c\n", ch);
    }

Dem Drucke der Ausgabe:

length : 9 
Ascii character x
Not ascii character 
Not ascii character 
Not ascii character 
Ascii character a
Ascii character b
Ascii character  
Ascii character c
Ascii character 

Bloßem Auge in der Länge von x√ab c zu sein scheint 6, aber im code ist es und kommt als 9 ?
Richtige Antwort für die x√ab c ist 1 ...ich.e hat es nur 1 nicht-ascii-Zeichen , aber in der obigen Ausgabe ist es, sich so 3 (mal Nicht ascii-Zeichen).

Wie finde ich die nicht-ascii-Zeichen aus UTF-8-string, richtig.

Bitte guide zu dem Thema.

  • der Schlüssel, um den Unterschied (und viele der alten können wir nicht mehr bewegen) ist, dass, wenn dies ist ein pre-code-Frage (du bist auf dem whiteboard oder in einem Konferenzraum Gedanken über den code), dann seine wahrscheinlich eher eine Frage für P. SE. Wenn Sie vorhandenen code und Debuggen, es ist eher SO.
  • wchar - und Unicode-Suche, auf google
  • √ (square root symbol) hat den unicode-Wert des 221A und ist in UTF-8 codiert als e2 88 9a finden Sie unter fileformat.info/info/unicode/char/221A/index.htm
  • danke. das nächste mal werde ich daran erinnern, dass
InformationsquelleAutor navyad | 2013-11-06
Schreibe einen Kommentar