c程序实现unicode字符转utf-8字符

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

/*
* =====================================================================================
*
* Filename: utou.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 utou (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] = {};
  utou (codepoint, str);
  printf ("str:%s\n", str);
  return EXIT_SUCCESS;
}     /* ---------- end of function main ---------- */
时间: 2024-08-02 19:57:39

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

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

一.概念 1,ASCII ASCII(American Standard Code for Information Interchange),中文名称为美国信息交换标准代码.是基于拉丁字母的一套电脑编码系统.它主要用于显示现代英语和其他西欧语言.它是现今最通用的单字节编码系统.ASCII码又分为标准ASCII码和扩展ASCII码. 标准ASCII码.标准ASCII 码也叫基础ASCII码,使用7 位二进制数来表示所有的大写和小写字母,数字0 到9.标点符号, 以及在美式英语中使用的特殊控制字符.

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

ASCII,Unicode,GBK和UTF-8字符编码的区别联系 wyrssktzc11级分类:其他被浏览86次2016.05.27 检举 KingSta逍遥 采纳率:45%7级2016.05.27 ASCII.Unicode.GBK和UTF-8字符编码的区别联系 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节".再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出

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

如果经常写python2,肯定会遇到各种"奇怪"的字符编码问题,每次都通过谷歌解决了,但是为什么会造成这种乱码.decode/encode失败等等,本文就字符和字符编码做一个总结,更加清晰区分诸多的编码. 字符集 一个系统支持的所有抽象字符的集合.字符是文字和符号的总称,包含各个国家文字.标点符号.图像符号.数字等.它为每一个字符分配一个唯一的ID,一般称之为码位.码点. 字符编码 它是一套规则,使用该规则能够将自然语言的字符的一个集合与其他东西的一个集合进行配对,在符号集合和数字系统

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

在计算机科学领域中,Unicode(统一码.万国码.单一码.标准万国码)是业界的一种标准,它可以使电脑得以体现世界上数十种文字的系统.Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式[1]对外发表.Unicode 还不断在扩增, 每个新版本插入更多新的字符.直至目前为止的第六版,Unicode 就已经包含了超过十万个字符(在2005年,Unicode 的第十万个字符被采纳且认可成为标准之一).一组可用以作为视觉参考的代码图表.

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

转自:http://www.crifan.com/python_already_got_correct_encoding_string_but_seems_print_messy_code/ [背景] Python中的字符编码,其实的确有点复杂. 再加上,不同的开发环境和工具中,显示的逻辑和效果又不太相同,尤其是,中文的,初级用户,最常遇到的: (1)在Python自带的IDE:IDLE中折腾中文字符,结果看到的差不多都是乱码类的东西,比如:’\xd6\xd0\xce\xc4′ (2)将一个中文

黑马程序员——Java基础--IO流(一)---字符流和字节流

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.IO流的介绍及体系 IO流用来处理设备之间的数据传输.java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中. 输入流和输出流相对于内存设备而言:将外设中的数据读取到内存中:输入.将内存中的数据写出到外设中:输出. 流按照操作数据分为两种:字节流和字符流. 字符流的由来:其实就是字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字,再对这个文字进行操作

黑马程序员—IO(一)流概述、字符流、字节流、流操作规律

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一节     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按其操作数据的类型分为两种:字节流和字符流. 5)流按其流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:Inp

字符,字符集,字符编码

字符,字符集,字符编码 简书郭文圣 现在Unicode已然一统天下,我想很多年轻的程序员可能都没遇到过编码问题,更不用说了解编码的发展了.前些日子在一个老网站上偶遇乱码,虽然入行时间不短,但对其究竟也是不甚了解,好奇心驱使下落入深坑.还好经过一段时间的摸爬滚打,边学边写,总算大概理清了个脉络,记录之,分享之. 概念 字符是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英文字母是一个字符,一个阿拉伯数字是一个字符,一个标点符号也是一个字符. 字符集是字符组成的集合,通常以二维表的形式存在

刨根究底字符编码之九——字符编码方案的演变与字节序

字符编码方案的演变与字节序 一.字符编码方案的演变 1. 前文已经提及,编号字符集CCS(简称字符集)与字符编码方式CEF(简称编码方式)这两个概念,在早期并没有必要严格区分. 在Unicode编码方案出现之前,字符集及其具体的编码方式是绑定耦合在一起的,因此,"字符集"."编码"或"编码方式"甚至"编码方案"这几个概念经常相互指代.彼此混用. 比如,字符集里的字符编号(即码点编号)在很多文章里也称之为字符编码.字符码.码点.

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

一.前言 继上一篇写完字节编码内容后,现在分析在Java中各字符编码的问题,并且由这个问题,也引出了一个更有意思的问题,笔者也还没有找到这个问题的答案.也希望各位园友指点指点. 二.Java字符编码 直接上代码进行分析似乎更有感觉.   运行结果:   说明:通过结果我们知道如下信息. 1. 在Java中,中文在用ASCII码表示为3F,实际对应符号'?',用ISO-8859-1表示为3F,实际对应符号也是为'?',这意味着中文已经超出了ASCII和ISO-8859-1的表示范围. 2. UTF