hc
2024-08-12 233ab1bd4c5697f5cdec94e60206e8c6ac609b4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdio.h>
#include "gbk_to_utf8.h"
#include "utf8_to_gbk.h"
#include "RK_encode.h"
 
int RK_encode_is_utf8(char *buf, const int size)
{
   int i = 0;
   int bit1num = 0;
   unsigned char temp = 0;
 
   if ((size == 0) || (*buf == '\0')) {
       return 1;
   }
 
   for (i = 0; i < size; i++) {
       if ((!bit1num) && ((buf[i] & 0x80) == 0)) {
           continue;
       } else if ((bit1num) && ((buf[i] & 0xc0) == 0x80)) {
           bit1num--;
           continue;
       } else if ((bit1num) && ((buf[i] & 0xc0) != 0x80)) {
           return 0;
       } else {
           temp = buf[i] & 0xff;
           bit1num = 0;
           while ((temp << bit1num) & 0x80) {
               bit1num++;
               if(bit1num > 6){
                   return 0;
               }
           }
           if(bit1num < 2) {
               return 0;
           }
           bit1num--;
       }
   }
   if(bit1num)
       return 0;
 
   return 1;
}
 
int RK_encode_gbk_to_utf8(unsigned char* src, int len, unsigned char* dst)
{
   return gbk_to_utf8(src, len, dst);
}
 
 
int RK_encode_utf8_to_gbk(unsigned char* src, int len, unsigned char* dst)
{
   return utf8_to_gbk(src, len, dst);
}