Utf.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:10k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1997 Sun Microsystems, Inc.
  3. '"
  4. '" See the file "license.terms" for information on usage and redistribution
  5. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  6. '" 
  7. '" RCS: @(#) $Id: Utf.3,v 1.13.2.2 2003/07/18 22:15:45 dkf Exp $
  8. '" 
  9. .so man.macros
  10. .TH Utf 3 "8.1" Tcl "Tcl Library Procedures"
  11. .BS
  12. .SH NAME
  13. Tcl_UniChar, Tcl_UniCharCaseMatch, Tcl_UniCharNcasecmp, Tcl_UniCharToUtf, Tcl_UtfToUniChar, Tcl_UniCharToUtfDString, Tcl_UtfToUniCharDString, Tcl_UniCharLen, Tcl_UniCharNcmp, Tcl_UtfCharComplete, Tcl_NumUtfChars, Tcl_UtfFindFirst, Tcl_UtfFindLast, Tcl_UtfNext, Tcl_UtfPrev, Tcl_UniCharAtIndex, Tcl_UtfAtIndex, Tcl_UtfBackslash - routines for manipulating UTF-8 strings.
  14. .SH SYNOPSIS
  15. .nf
  16. fB#include <tcl.h>fR
  17. .sp
  18. typedef ... Tcl_UniChar;
  19. .sp
  20. int
  21. fBTcl_UniCharToUtffR(fIch, buffR)
  22. .sp
  23. int
  24. fBTcl_UtfToUniCharfR(fIsrc, chPtrfR)
  25. .VS 8.4
  26. .sp
  27. char *
  28. fBTcl_UniCharToUtfDStringfR(fIuniStr, numChars, dstPtrfR)
  29. .sp
  30. Tcl_UniChar *
  31. fBTcl_UtfToUniCharDStringfR(fIsrc, len, dstPtrfR)
  32. .VE 8.4
  33. .sp
  34. int
  35. fBTcl_UniCharLenfR(fIuniStrfR)
  36. .sp
  37. int
  38. fBTcl_UniCharNcmpfR(fIuniStr, uniStr, numfR)
  39. .VS 8.4
  40. .sp
  41. int
  42. fBTcl_UniCharNcasecmpfR(fIuniStr, uniStr, numfR)
  43. .sp
  44. int
  45. fBTcl_UniCharCaseMatchfR(fIuniStr, uniPattern, nocasefR)
  46. .VE 8.4
  47. .sp
  48. int
  49. fBTcl_UtfNcmpfR(fIsrc, src, numfR)
  50. .sp
  51. int
  52. fBTcl_UtfNcasecmpfR(fIsrc, src, numfR)
  53. .sp
  54. int
  55. fBTcl_UtfCharCompletefR(fIsrc, lenfR)
  56. .sp
  57. int 
  58. fBTcl_NumUtfCharsfR(fIsrc, lenfR)
  59. .VS 8.4
  60. .sp
  61. CONST char *
  62. fBTcl_UtfFindFirstfR(fIsrc, chfR)
  63. .sp
  64. CONST char *
  65. fBTcl_UtfFindLastfR(fIsrc, chfR)
  66. .sp
  67. CONST char *
  68. fBTcl_UtfNextfR(fIsrcfR)
  69. .sp
  70. CONST char *
  71. fBTcl_UtfPrevfR(fIsrc, startfR)
  72. .VE 8.4
  73. .sp
  74. Tcl_UniChar
  75. fBTcl_UniCharAtIndexfR(fIsrc, indexfR)
  76. .VS 8.4
  77. .sp
  78. CONST char *
  79. fBTcl_UtfAtIndexfR(fIsrc, indexfR)
  80. .VE 8.4
  81. .sp
  82. int
  83. fBTcl_UtfBackslashfR(fIsrc, readPtr, dstfR)
  84. .SH ARGUMENTS
  85. .AS "CONST Tcl_UniChar" numChars in/out
  86. .AP char *buf out
  87. Buffer in which the UTF-8 representation of the Tcl_UniChar is stored.  At most
  88. TCL_UTF_MAX bytes are stored in the buffer.
  89. .AP int ch in
  90. The Tcl_UniChar to be converted or examined.
  91. .AP Tcl_UniChar *chPtr out
  92. Filled with the Tcl_UniChar represented by the head of the UTF-8 string.
  93. .AP "CONST char" *src in
  94. Pointer to a UTF-8 string.
  95. .AP "CONST Tcl_UniChar" *uniStr in
  96. A null-terminated Unicode string.
  97. .AP "CONST Tcl_UniChar" *uniPattern in
  98. A null-terminated Unicode string.
  99. .AP int len in
  100. The length of the UTF-8 string in bytes (not UTF-8 characters).  If
  101. negative, all bytes up to the first null byte are used.
  102. .AP int numChars in
  103. The length of the Unicode string in characters.  Must be greater than or
  104. equal to 0.
  105. .AP "Tcl_DString" *dstPtr in/out
  106. A pointer to a previously-initialized fBTcl_DStringfR.
  107. .AP "unsigned long" num in
  108. The number of characters to compare.
  109. .AP "CONST char" *start in
  110. Pointer to the beginning of a UTF-8 string.
  111. .AP int index in
  112. The index of a character (not byte) in the UTF-8 string.
  113. .AP int *readPtr out
  114. If non-NULL, filled with the number of bytes in the backslash sequence, 
  115. including the backslash character.
  116. .AP char *dst out
  117. Buffer in which the bytes represented by the backslash sequence are stored.
  118. At most TCL_UTF_MAX bytes are stored in the buffer.
  119. .VS 8.4
  120. .AP int nocase in
  121. Specifies whether the match should be done case-sensitive (0) or
  122. case-insensitive (1).
  123. .VE 8.4
  124. .BE
  125. .SH DESCRIPTION
  126. .PP
  127. These routines convert between UTF-8 strings and Tcl_UniChars.  A
  128. Tcl_UniChar is a Unicode character represented as an unsigned, fixed-size
  129. quantity.  A UTF-8 character is a Unicode character represented as
  130. a varying-length sequence of up to TCL_UTF_MAX bytes.  A multibyte UTF-8
  131. sequence consists of a lead byte followed by some number of trail bytes.
  132. .PP
  133. fBTCL_UTF_MAXfR is the maximum number of bytes that it takes to
  134. represent one Unicode character in the UTF-8 representation.
  135. .PP
  136. fBTcl_UniCharToUtffR stores the Tcl_UniChar fIchfR as a UTF-8 string
  137. in starting at fIbuffR.  The return value is the number of bytes stored
  138. in fIbuffR.
  139. .PP
  140. fBTcl_UtfToUniCharfR reads one UTF-8 character starting at fIsrcfR
  141. and stores it as a Tcl_UniChar in fI*chPtrfR.  The return value is the
  142. number of bytes read from fIsrcfR..  The caller must ensure that the
  143. source buffer is long enough such that this routine does not run off the
  144. end and dereference non-existent or random memory; if the source buffer
  145. is known to be null-terminated, this will not happen.  If the input is
  146. not in proper UTF-8 format, fBTcl_UtfToUniCharfR will store the first
  147. byte of fIsrcfR in fI*chPtrfR as a Tcl_UniChar between 0x0000 and
  148. 0x00ff and return 1.  
  149. .PP
  150. fBTcl_UniCharToUtfDStringfR converts the given Unicode string
  151. to UTF-8, storing the result in a previously-initialized fBTcl_DStringfR.
  152. You must specify the length of the given Unicode string.
  153. The return value is a pointer to the UTF-8 representation of the
  154. Unicode string.  Storage for the return value is appended to the
  155. end of the fBTcl_DStringfR.
  156. .PP
  157. fBTcl_UtfToUniCharDStringfR converts the given UTF-8 string to Unicode,
  158. storing the result in the previously-initialized fBTcl_DStringfR.
  159. you may either specify the length of the given UTF-8 string or "-1",
  160. in which case fBTcl_UtfToUniCharDStringfR uses fBstrlenfR to
  161. calculate the length.  The return value is a pointer to the Unicode
  162. representation of the UTF-8 string.  Storage for the return value
  163. is appended to the end of the fBTcl_DStringfR.  The Unicode string
  164. is terminated with a Unicode null character.
  165. .PP
  166. fBTcl_UniCharLenfR corresponds to fBstrlenfR for Unicode
  167. characters.  It accepts a null-terminated Unicode string and returns
  168. the number of Unicode characters (not bytes) in that string.
  169. .PP
  170. fBTcl_UniCharNcmpfR and fBTcl_UniCharNcasecmpfR correspond to
  171. fBstrncmpfR and fBstrncasecmpfR, respectively, for Unicode characters.
  172. They accepts two null-terminated Unicode strings and the number of characters
  173. to compare.  Both strings are assumed to be at least fIlenfR characters
  174. long. fBTcl_UniCharNcmpfR  compares the two strings character-by-character
  175. according to the Unicode character ordering.  It returns an integer greater
  176. than, equal to, or less than 0 if the first string is greater than, equal
  177. to, or less than the second string respectively.  fBTcl_UniCharNcasecmpfR
  178. is the Unicode case insensitive version.
  179. .PP
  180. .VS 8.4
  181. fBTcl_UniCharCaseMatchfR is the Unicode equivalent to
  182. fBTcl_StringCaseMatchfR.  It accepts a null-terminated Unicode string,
  183. a Unicode pattern, and a boolean value specifying whether the match should
  184. be case sensitive and returns whether the string matches the pattern.
  185. .VE 8.4
  186. .PP
  187. fBTcl_UtfNcmpfR corresponds to fBstrncmpfR for UTF-8 strings. It
  188. accepts two null-terminated UTF-8 strings and the number of characters
  189. to compare.  (Both strings are assumed to be at least fIlenfR
  190. characters long.)  fBTcl_UtfNcmpfR compares the two strings
  191. character-by-character according to the Unicode character ordering.
  192. It returns an integer greater than, equal to, or less than 0 if the
  193. first string is greater than, equal to, or less than the second string
  194. respectively.
  195. .PP
  196. fBTcl_UtfNcasecmpfR corresponds to fBstrncasecmpfR for UTF-8
  197. strings.  It is similar to fBTcl_UtfNcmpfR except comparisons ignore
  198. differences in case when comparing upper, lower or title case
  199. characters.
  200. .PP
  201. fBTcl_UtfCharCompletefR returns 1 if the source UTF-8 string fIsrcfR
  202. of length fIlenfR bytes is long enough to be decoded by
  203. fBTcl_UtfToUniCharfR, or 0 otherwise.  This function does not guarantee
  204. that the UTF-8 string is properly formed.  This routine is used by
  205. procedures that are operating on a byte at a time and need to know if a
  206. full Tcl_UniChar has been seen.
  207. .PP
  208. fBTcl_NumUtfCharsfR corresponds to fBstrlenfR for UTF-8 strings.  It
  209. returns the number of Tcl_UniChars that are represented by the UTF-8 string
  210. fIsrcfR.  The length of the source string is fIlenfR bytes.  If the
  211. length is negative, all bytes up to the first null byte are used.
  212. .PP
  213. fBTcl_UtfFindFirstfR corresponds to fBstrchrfR for UTF-8 strings.  It
  214. returns a pointer to the first occurrence of the Tcl_UniChar fIchfR
  215. in the null-terminated UTF-8 string fIsrcfR.  The null terminator is
  216. considered part of the UTF-8 string.  
  217. .PP
  218. fBTcl_UtfFindLastfR corresponds to fBstrrchrfR for UTF-8 strings.  It
  219. returns a pointer to the last occurrence of the Tcl_UniChar fIchfR
  220. in the null-terminated UTF-8 string fIsrcfR.  The null terminator is
  221. considered part of the UTF-8 string.  
  222. .PP
  223. Given fIsrcfR, a pointer to some location in a UTF-8 string,
  224. fBTcl_UtfNextfR returns a pointer to the next UTF-8 character in the
  225. string.  The caller must not ask for the next character after the last
  226. character in the string if the string is not terminated by a null
  227. character.
  228. .PP
  229. Given fIsrcfR, a pointer to some location in a UTF-8 string (or to a
  230. null byte immediately following such a string), fBTcl_UtfPrevfR
  231. returns a pointer to the closest preceding byte that starts a UTF-8
  232. character.
  233. This function will not back up to a position before fIstartfR,
  234. the start of the UTF-8 string.  If fIsrcfR was already at fIstartfR, the
  235. return value will be fIstartfR.
  236. .PP
  237. fBTcl_UniCharAtIndexfR corresponds to a C string array dereference or the
  238. Pascal Ord() function.  It returns the Tcl_UniChar represented at the
  239. specified character (not byte) fIindexfR in the UTF-8 string
  240. fIsrcfR.  The source string must contain at least fIindexfR
  241. characters.  Behavior is undefined if a negative fIindexfR is given.
  242. .PP
  243. fBTcl_UtfAtIndexfR returns a pointer to the specified character (not
  244. byte) fIindexfR in the UTF-8 string fIsrcfR.  The source string must
  245. contain at least fIindexfR characters.  This is equivalent to calling 
  246. fBTcl_UtfNextfR fIindexfR times.  If a negative fIindexfR is given,
  247. the return pointer points to the first character in the source string.
  248. .PP
  249. fBTcl_UtfBackslashfR is a utility procedure used by several of the Tcl
  250. commands.  It parses a backslash sequence and stores the properly formed
  251. UTF-8 character represented by the backslash sequence in the output
  252. buffer fIdstfR.  At most TCL_UTF_MAX bytes are stored in the buffer.
  253. fBTcl_UtfBackslashfR modifies fI*readPtrfR to contain the number
  254. of bytes in the backslash sequence, including the backslash character.
  255. The return value is the number of bytes stored in the output buffer.
  256. .PP
  257. See the fBTclfR manual entry for information on the valid backslash
  258. sequences.  All of the sequences described in the Tcl manual entry are
  259. supported by fBTcl_UtfBackslashfR.
  260. .SH KEYWORDS
  261. utf, unicode, backslash