utf8.h
来自「MSYS在windows下模拟了一个类unix的终端」· C头文件 代码 · 共 73 行
H
73 行
/* utf8.h * * Copyright (c) 1998-2001, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */START_EXTERN_C#ifdef DOINITEXTCONST unsigned char PL_utf8skip[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus */2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, /* scripts */3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6, /* cjk etc. */7,13, /* Perl extended (not UTF-8). Up to 72bit allowed (64-bit + reserved). */};#elseEXTCONST unsigned char PL_utf8skip[];#endifEND_EXTERN_C#define UTF8_MAXLEN 13 /* how wide can a single UTF8 encoded character become *//* #define IN_UTF8 (PL_curcop->op_private & HINT_UTF8) */#define IN_BYTE (PL_curcop->op_private & HINT_BYTE)#define DO_UTF8(sv) (SvUTF8(sv) && !IN_BYTE)#define UTF8_ALLOW_EMPTY 0x0001#define UTF8_ALLOW_CONTINUATION 0x0002#define UTF8_ALLOW_NON_CONTINUATION 0x0004#define UTF8_ALLOW_FE_FF 0x0008#define UTF8_ALLOW_SHORT 0x0010#define UTF8_ALLOW_SURROGATE 0x0020#define UTF8_ALLOW_BOM 0x0040#define UTF8_ALLOW_FFFF 0x0080#define UTF8_ALLOW_LONG 0x0100#define UTF8_ALLOW_ANYUV (UTF8_ALLOW_EMPTY|UTF8_ALLOW_FE_FF|\ UTF8_ALLOW_SURROGATE|UTF8_ALLOW_BOM|\ UTF8_ALLOW_FFFF|UTF8_ALLOW_LONG)#define UTF8_ALLOW_ANY 0x00ff#define UTF8_CHECK_ONLY 0x0100#define UNICODE_SURROGATE_FIRST 0xd800#define UNICODE_SURROGATE_LAST 0xdfff#define UNICODE_REPLACEMENT 0xfffd#define UNICODE_BYTER_ORDER_MARK 0xfffe#define UNICODE_ILLEGAL 0xffff#define UNICODE_IS_SURROGATE(c) ((c) >= UNICODE_SURROGATE_FIRST && \ (c) <= UNICODE_SURROGATE_LAST)#define UNICODE_IS_REPLACEMENT(c) ((c) == UNICODE_REPLACMENT)#define UNICODE_IS_BYTE_ORDER_MARK(c) ((c) == UNICODE_BYTER_ORDER_MARK)#define UNICODE_IS_ILLEGAL(c) ((c) == UNICODE_ILLEGAL)#define UTF8SKIP(s) PL_utf8skip[*(U8*)s]#define UTF8_QUAD_MAX UINT64_C(0x1000000000)/* The following table is from Unicode 3.1. Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte U+0000..U+007F 00..7F牋
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?