下面是一个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[];
  if (codepoint < 0x80)
  {
    out[] = (char)codepoint;
    strncpy (str, out, );
  }
  else if (codepoint < 0x800)
  {
    out[] = 0xC0 | (codepoint >> );
    out[] = 0x80 | (codepoint & 0x0000003F);
    strncpy (str, out, );
  }
  else if (codepoint < 0x10000)
  {
    out[] = 0xE0 | (codepoint >> );
    out[] = 0x80 | ((codepoint & 0x00000FFF) >> );
    out[] = 0x80 | (codepoint & 0x0000003F);
    strncpy (str, out, );
  }
  else
  {
    out[] = 0xF0 | (codepoint >> );
    out[] = 0x80 | ((codepoint & 0x0003FFFF) >> );
    out[] = 0x80 | ((codepoint & 0x00000FFF) >> );
    out[] = 0x80 | (codepoint & 0x0000003F);
    strncpy (str, out, );
  }   return ;
} /*
* === FUNCTION ======================================================================
* Name: main
* Description:
* =====================================================================================
*/
int main ( int argc, char *argv[] )
{
  //unsigned int codepoint = 0x6c41;
  unsigned int codepoint = 0xFFFF;
  char str[] = {};
  unicode_to_utf8 (codepoint, str);
  printf ("str:%s\n", str);
  return EXIT_SUCCESS;
} /* ---------- end of function main ---------- */

c程序实现unicode字符转utf-8字符的更多相关文章

  1. windows控制台程序——关于UNICODE字符的总结(转)

    前言:从Windows NT/2000开如,Windows系统已经是一个标准的UNICODE系统,系统内部所有字符串存储及操作均使用UNICODE编码.因此Win32 API都是UNICODE版本的, ...

  2. ASCII、Unicode、GBK和UTF-8字符编码的区别联系(转载)

    ASCII.Unicode.GBK和UTF-8字符编码的区别联系 转载自:http://dengo.org/archives/901 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同 ...

  3. Unicode其实是Latin1的扩展。只有一个低字节的Uncode字符其实就是Latin1字符——附各种字符编码表及转换表

    一.概念 1,ASCII             ASCII(American Standard Code for Information Interchange),中文名称为美国信息交换标准代码.是 ...

  4. ASCII,Unicode,GBK和UTF-8字符编码的区别和联系

    如果经常写python2,肯定会遇到各种“奇怪”的字符编码问题,每次都通过谷歌解决了,但是为什么会造成这种乱码.decode/encode失败等等,本文就字符和字符编码做一个总结,更加清晰区分诸多的编 ...

  5. 【整理】Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来或打印出来却是乱码

    转自:http://www.crifan.com/python_already_got_correct_encoding_string_but_seems_print_messy_code/ [背景] ...

  6. 在2005年,Unicode 的第十万个字符被采纳且认可成为标准之一(超过这65535范围的Unicode字符,则需要使用一些诡异的技巧来实现)

    在计算机科学领域中,Unicode(统一码.万国码.单一码.标准万国码)是业界的一种标准,它可以使电脑得以体现世界上数十种文字的系统.Unicode 是基于通用字符集(Universal Charac ...

  7. C语言程序实现,统计字符串里面各个字符的个数在总字符个数中的比例,并打印输出。

    #include<stdio.h> int main() { char *ppp= "aaassadddeeds"; ] = {};//存放字符 uint32 ccnt ...

  8. 【字符编码】Java字符编码详细解答及问题探讨

    一.前言 继上一篇写完字节编码内容后,现在分析在Java中各字符编码的问题,并且由这个问题,也引出了一个更有意思的问题,笔者也还没有找到这个问题的答案.也希望各位园友指点指点. 二.Java字符编码 ...

  9. JAVA IO分析一:File类、字节流、字符流、字节字符转换流

    因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...

  10. 字节与字符_字节流与字符流_ASCII与Unicode_GB2312_GBK_GB18030_BIG-5

    字节(Byte):通常将可表示经常使用英文字符8位二进制称为一字节. 一个英文字母(不分大写和小写)占一个字节的空间,一个中文汉字占两个字节的空间. 符号:英文标点2占一个字节,中文标点占两个字节. ...

随机推荐

  1. EasyPlayerPro windows播放器在播放RTMP视频显示重复异常问题解决

    问题来源 2017.12.18 今日有杭州某教育领域客户反馈EasyPlayerPro在播放一个rtmp源时,画面显示异常的问题.截图如下: 问题复现 一番思考, 将显示格式改为D3D显示, 正常, ...

  2. Wix Burn:如何将32位和64位的安装包制作成一个安装包

    由于Windows Installer不是平台独立的(即区分32-bit和64-bit),因此用Wix制作的安装包在编译不能像.net应用那样采用Any CPU编译,而必须制定是目标Platform是 ...

  3. linux日志系统介绍 —— syslog(),openlog(),closelog()

    函数使用介绍 这里面的三个函数openlog, syslog.closelog是一套系统日志写入接口.另外那个vsyslog和syslog功能一样,仅仅是參数格式不同.         通常.sysl ...

  4. Redis3.x HA 方案(基于 Sentinel 方式)

    第一部分 Redis-HA 搭建 一.Redis-HA 拓扑 一主两从,主从复制,故障时主从切换 三个Redis节点 + Sentinel 节点 Master          127.0.0.1   ...

  5. ABAP screen

    Instance One : SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-100. SELECTION-SCREEN BEGIN ...

  6. Java分支循环结构

    一.Java分支结构 1.if语句:一个 if 语句包含一个布尔表达式和一条或多条语句. if 语句的用语法如下:  if(布尔表达式){ 如果布尔表达式为true将执行的语句  } public c ...

  7. HTML5_CSS3可切换注册登录表单

    在线演示 本地下载

  8. loader与plugin,module与chunk,compiler与compilation

    loader将各类型的文件转为webpack能处理的有效模块(module) 插件处理范围更广的任务,例如打包优化.压缩等 module程序的离散功能块,一个文件对应一个module chunk若干m ...

  9. 使用git连接到Github

    直奔主题,使用git连接到Github步骤如下: 1. 安装git yum install git 或者 sudo get-apt install git git-core 2. 全局配置 git c ...

  10. uboot中添加自定义命令

    uboot中可以通过修改源程序来添加自定义命令,进一步扩展uboot的功能. 我想在uboot下添加一条新的命令(名为varcpy),用来拷贝uboot中的环境变量. 修改方式如下: 创建新文件com ...