首页 > 其他分享 >ios CCEncoding.m

ios CCEncoding.m

时间:2024-06-19 19:31:13浏览次数:26  
标签:src GB18030 const ios char NSString unicode CCEncoding

//
//  CCEncoding.h
//  CCFC
//
//  Created by xichen on 11-12-18.
//  Copyright 2011 ccteam. All rights reserved.
//


#import <Foundation/Foundation.h>


// "陈曦" 的unicode编码为: 
//              0x48 0x96 0xE6 0x66 
// UTF8编码为:
//              0xE9 0x99 0x88 0xE6 0x9B 0xA6 
// GB18030编码为:
//              0xB3 0xC2 0xEA 0xD8
@interface CCEncoding : NSObject 
{


}


// log all encodings
+ (void)logAllEncodings;




// unicode                      --->                    UTF8
+ (const char *)UnicodeToUTF8:(NSString *)src;


// UTF8                         --->                    unicode
+ (NSString *)UTF8ToUnicode:(const char *)src;


// GB18030                      --->                    unicode
+ (NSString *)GB18030ToUnicode:(const char *)src;


// unicode                      --->                    GB18030
+ (const char *)UnicodeToGB18030:(NSString *)src;


// GB18030                      --->                    UTF8
// GB18030      --> Unicode             -->             UTF8
+ (const char *)GB18030ToUTF8:(const char *)src;


// UTF8                         --->                    GB18030
// UTF8         -->     Unicode         -->             GB18030
+ (const char *)UTF8ToGB18030:(const char *)src;


// Unicode cStr  to Unicode NSString 
// you should make sure the cStr begins with 0xFF, 0xFE(the unicode flag).
+ (NSString *)UnicodeCStrToUnicode:(const char *)cStr withLen:(int)len;




@end

 

//
//  CCEncoding.m
//  CCFC
//
//  Created by xichen on 11-12-18.
//  Copyright 2011 ccteam. All rights reserved.
//


#import "CCEncoding.h"




@implementation CCEncoding


// log all encodings
+ (void)logAllEncodings
{
        const NSStringEncoding *encodings = [NSString availableStringEncodings];
        NSMutableString *str = [[NSMutableString alloc] init];
        NSStringEncoding encoding;
        
        while ((encoding = *encodings++) != 0)
        {
                [str appendFormat:@"%@ is %x\n", [NSString localizedNameOfStringEncoding:encoding], encoding];
        }
        NSLog(@"str is %@", str);
        [str release];
        
        NSLog(@"defaultCStringEncoding is %d", [NSString defaultCStringEncoding]);
}


// unicode                      --->                    UTF8
+ (const char *)UnicodeToUTF8:(NSString *)src
{
        return [src UTF8String]; 
}


// UTF8                         --->                    unicode
+ (NSString *)UTF8ToUnicode:(const char *)src
{
        return [NSString stringWithCString:src encoding:NSUTF8StringEncoding];
}




// GB18030                      --->                    unicode
+ (NSString *)GB18030ToUnicode:(const char *)src
{
        NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
        return [NSString stringWithCString:src encoding:enc];
}


// unicode                      --->                    GB18030
+ (const char *)UnicodeToGB18030:(NSString *)src
{
        NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
        return [src cStringUsingEncoding:enc]; 
}


// GB18030                      --->                    UTF8
// GB18030      --> Unicode             -->             UTF8
+ (const char *)GB18030ToUTF8:(const char *)src
{
        NSString *unicode = [self GB18030ToUnicode:src];
        return [self UnicodeToUTF8:unicode];
}


// UTF8                         --->                    GB18030
// UTF8         -->     Unicode         -->             GB18030
+ (const char *)UTF8ToGB18030:(const char *)src
{
        NSString *unicode = [self UTF8ToUnicode:src];
        return [self UnicodeToGB18030:unicode];
}


// Unicode cStr  to Unicode NSString 
// you should make sure the cStr begins with 0xFF, 0xFE(the unicode flag).
+ (NSString *)UnicodeCStrToUnicode:(const char *)cStr withLen:(int)len
{
        NSData *data = [NSData dataWithBytes:cStr length:len];
        return [[[NSString alloc] initWithData:data encoding:NSUnicodeStringEncoding] autorelease];
}




@end


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

标签:src,GB18030,const,ios,char,NSString,unicode,CCEncoding
From: https://blog.csdn.net/cxsjabcabc/article/details/7167704

相关文章

  • 技嘉BIOS超频设置操作路径
    关闭超线程频率电压控制>进阶处理器设置>Hyper_THreading关小核心频率电压控制>GIGABYTEPerfDrive>EcoreDisable防掉压等级频率电压控制>高级电压设定>处理器/VRM设置>CPUVcoreLoadline校正建议turbo温度墙频率电压控制>进阶处理器设置>......
  • iOS 18定了,这个新功能我等了7年
    话说一年一度的苹果开发者大会(WWDC),还有几天就要到来。而熟悉的机友也知道的。若无意外,备受关注的iOS18,也将在WWDC上正式亮相。至于这次果子会上些什么史诗级大招。但我知道,还有很多机友关心的,并不是什么AI功能的更新。而是期盼果子能给iOS18的界面,来个全面焕新......
  • 英伟达开源 3400 亿参数模型;苹果 iOS 18 紧急 SOS 新增实时视频功能丨 RTE 开发者日报
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观......
  • 谈一谈Android系统和iOS系统的点击实现复制功能
    序言:   谈到复制功能,想必大多数人都使用的navigator.clipboard.writeText()来实现对文本的复制。但是这个方法却只能在Android系统中成功复制到剪切板,在iOS系统中却不行,下面就谈谈iOS系统中的问题和实现方法。问题描述:iOS对用户数据和设备功能的访问有着严格的控制,尤其是......
  • iOS开发之弹窗管理
    前言“千淘万漉虽辛苦,吹尽狂沙始到金。”在这快速变化的互联网行业,身边的朋友有的选择了勇敢创业,有的则在技术的海洋中默默耕耘。时常在深夜反思,作为一个开发者,我们的价值何在?答案或许就在那行代码中,润物细无声。以下是我在日常开发中封装的一个弹窗管理工具——CLPopoverManager......
  • 【iOS】自定义cell及其复用机制
    文章目录cell的复用注册非注册两者的区别自定义cellcell的复用当用户滚动UITableView或UICollectionView时,只有少量可见的cell会被实际创建和显示。对于那些暂时不可见的cell,系统会将它们缓存起来以备将来复用。这就是所谓的cell复用机制。为什么需要......
  • VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS ConnectX-3 网卡定制版 (集成驱动版)
    VMwareESXi8.0U2cmacOSUnlocker&OEMBIOSConnectX-3网卡定制版(集成驱动版)发布ESXi8.0U2集成驱动版,在个人电脑上运行企业级工作负载请访问原文链接:https://sysin.org/blog/vmware-esxi-8-u2-sysin/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org......
  • 《pvz植物大战僵尸杂交版》V2.0.88整合包火爆全网,支持安卓、ios、电脑等!
    今天来给大家安利一款让人欲罢不能的游戏——《植物大战僵尸·杂交版》2.0.88版。这可不是普通的植物大战僵尸,它可是席卷了B站,火爆全网的存在!先说说这个版本,它可是网络上现存最全的植物大战僵尸杂交版整合包。里面不仅有修改工具,还有超强通关存档和高清工具,简直是玩家的福音。......
  • 一起来学javascript-axios
       <!--//AJAX的封装插件——Axios。  //什么是Axios  //Axios是一个基于Promise的HTTP库,可以用于浏览器和Node.js,支持VanillaJS、Angular、React、Vue等框架。  //简单的理解就是对Ajax的封装,且具有易用、简洁、高效等特点。  ......
  • iOS界面设计要点:四大模块解析
    UI设计不是艺术设计,这限制了我们从设备和现有技术开始设计。因此,熟悉每个平台的设计规则已经成为每个设计师的第一课,也是每个设计师必要的专业知识。今天小边给您带来了iOS设计规范,希望帮助您快速熟悉iOS平台设计规范,帮助您提高工作效率,避免设计初期的一些细节错误。iphone15......