您好,登錄后才能下訂單哦!
在C語言中,處理UTF-8編碼的字符串需要一些特殊的技巧,因為UTF-8是一種可變長度的編碼方式,其中一個字符可能由1到4個字節組成
#include<stdio.h>
#include<string.h>
size_t utf8_strlen(const char *str) {
size_t len = 0;
for (size_t i = 0; str[i] != '\0'; ++i) {
if ((str[i] & 0xC0) != 0x80) {
++len;
}
}
return len;
}
int main() {
const char *str = "你好,世界!";
printf("UTF-8字符串長度: %zu\n", utf8_strlen(str));
return 0;
}
#include<stdio.h>
#include<string.h>
void utf8_print_chars(const char *str) {
for (size_t i = 0; str[i] != '\0'; ++i) {
if ((str[i] & 0xC0) != 0x80) {
int char_len = 1;
if ((str[i] & 0xF0) == 0xF0) {
char_len = 4;
} else if ((str[i] & 0xE0) == 0xE0) {
char_len = 3;
} else if ((str[i] & 0xC0) == 0xC0) {
char_len = 2;
}
printf("Character: ");
for (int j = 0; j< char_len; ++j) {
printf("%02X ", (unsigned char)str[i + j]);
}
printf("\n");
i += char_len - 1;
}
}
}
int main() {
const char *str = "你好,世界!";
utf8_print_chars(str);
return 0;
}
#include<stdio.h>
#include<string.h>
#include <wchar.h>
#include<locale.h>
int main() {
setlocale(LC_ALL, ""); // 設置本地化,以便正確處理寬字符
const char *str = "你好,世界!";
wchar_t wstr[256];
mbstowcs(wstr, str, sizeof(wstr) / sizeof(wstr[0]));
wprintf(L"Wide string: %ls\n", wstr);
return 0;
}
注意:在處理UTF-8編碼的字符串時,請確保使用支持UTF-8的庫和系統。同時,對于不同平臺和編譯器,處理方式可能略有不同。在實際開發中,可以考慮使用第三方庫,如iconv或者libutf8來處理UTF-8編碼。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。