utf8
-
hallo
in PHP gibt es die funktion utf8_decode
beispiel:
searchterm);wie realisiere ich das in "C" ?
Ich habe dort begriffe wie
Mücke anstatt Mücke
-
vielleicht hilft das:
#define LOWER_6_BIT(u) ((u) & 0x003f) #define BIT7(a) ((a) & 0x80) #define BIT6(a) ((a) & 0x40) // Converts UTF-8 to unicode // ------------------------- // lpSrcStr Points to UTF8 encoded string // cchSrc Length of UTF8 string // lpDestStr Points to output buffer // cchDest Number of bytes in output buffer int UTF8ToUnicode (char *lpSrcStr, int cchSrc, wchar_t *lpDestStr, int cchDest) { int nTB = 0; int cchWC = 0; char *pUTF8 = lpSrcStr; char UTF8; while ((cchSrc--) && ((cchDest == 0) || (cchWC < cchDest))) { if (BIT7(*pUTF8) == 0) { if (cchDest) lpDestStr[cchWC] = (wchar_t)*pUTF8; cchWC++; } else if (BIT6(*pUTF8) == 0) { if (nTB != 0) { nTB--; if (cchDest) { lpDestStr[cchWC] <<= 6; lpDestStr[cchWC] |= LOWER_6_BIT(*pUTF8); } if (nTB == 0) cchWC++; } } else { if (nTB > 0) { nTB = 0; cchWC++; } else { UTF8 = *pUTF8; while (BIT7(UTF8) != 0) { UTF8 <<= 1; nTB++; } if (cchDest) lpDestStr[cchWC] = UTF8 >> nTB; nTB--; } } pUTF8++; } return cchWC; }
wenn du nur ascii-zeichen hast nimmst nur jedes 2te byte des erzeugten unicode strings...
-
Das ist aber nicht gerade ziemlich toll. Da sollte man noch sowas wie Locals in C++ berücksichtigen, und sichw as für Zeichen überlegen die nicht umgewandelt werden können.
-
frintrop schrieb:
wie realisiere ich das in "C" ?
Ich habe dort begriffe wie
Mücke anstatt MückeWo? Bei der Aussage auf deinem Terminal? Dann stell deine Terminal-Emulation auf UTF8 um.
Ansonsten solltest du die locales bei der Ausgabe beachten.
-
Entsetzter Zuschauer schrieb:
Das ist aber nicht gerade ziemlich toll.
kein wunder. ist ja auch von microsoft