zoukankan      html  css  js  c++  java
  • c程序实现unicode字符转utf-8字符

    下面是一个unicode字符转换为utf-8的c程序实现:

    /*
    * =====================================================================================
    *
    * Filename: unicodetoutf8.c
    *
    * Description: 
    *
    * Version: 1.0
    * Created: 08/06/2015 10:53:31 AM
    * Revision: none
    * Compiler: gcc
    *
    * Author: YOUR NAME (), 
    * Organization: 
    *
    * =====================================================================================
    */
    
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    int unicode_to_utf8 (unsigned int codepoint, char *str)
    {
      char out[4];
      if (codepoint < 0x80)
      {
        out[0] = (char)codepoint;
        strncpy (str, out, 1);
      }
      else if (codepoint < 0x800)
      {
        out[0] = 0xC0 | (codepoint >> 6);
        out[1] = 0x80 | (codepoint & 0x0000003F);
        strncpy (str, out, 2);
      }
      else if (codepoint < 0x10000)
      {
        out[0] = 0xE0 | (codepoint >> 12);
        out[1] = 0x80 | ((codepoint & 0x00000FFF) >> 6);
        out[2] = 0x80 | (codepoint & 0x0000003F);
        strncpy (str, out, 3);
      }
      else
      {
        out[0] = 0xF0 | (codepoint >> 18);
        out[1] = 0x80 | ((codepoint & 0x0003FFFF) >> 12);
        out[2] = 0x80 | ((codepoint & 0x00000FFF) >> 6);
        out[3] = 0x80 | (codepoint & 0x0000003F);
        strncpy (str, out, 4);
      }
    
      return 0; 
    }
    
    /* 
    * === FUNCTION ======================================================================
    * Name: main
    * Description: 
    * =====================================================================================
    */
    int main ( int argc, char *argv[] )
    {
      //unsigned int codepoint = 0x6c41;
      unsigned int codepoint = 0xFFFF;
      char str[16] = {};
      unicode_to_utf8 (codepoint, str);
      printf ("str:%s
    ", str);
      return EXIT_SUCCESS;
    }     /* ---------- end of function main ---------- */
  • 相关阅读:
    IEEE 754 浮点数的表示方法
    .NET Core 3.0及以上的EFCore连接MySql
    一些常见错误/技巧/结论总结
    2-sat学习笔记
    动态DP学习笔记
    动态规划优化算法——wqs二分 and 折线优化
    扩展莫队小总结(二) (回滚莫队/二次离线莫队)
    CF1504X Codeforces Round #712
    CF1500D Tiles for Bathroom (递推+大讨论)
    CF1486X Codeforces Round #703
  • 原文地址:https://www.cnblogs.com/etangyushan/p/4707488.html
Copyright © 2011-2022 走看看