NSLog 编码错误

2024-04-26

我的以下代码有问题:

NSString *strValue=@"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
NSLog(@"%s", temp);

代码第一行有两个汉字被双引号括起来。问题是 printf 函数可以正确显示汉字,但 NSLog 不能。


Thanks to all. I figured out a solution for this problem. Foundation uses UTF-16 by default, so in order to use NSLog to output the c string in the example, I have to use cStringUsingEncoding to get UTF-16 c string and use %S to replace %s.
NSString *strValue=@"你好";
char temp[200];
strcpy(temp, [strValue UTF8String]);
printf("%s", temp);
strcpy(temp, [strValue cStringUsingEncoding:NSUTF16LittleEndianStringEncoding]);
NSLog(@"%S", temp);

NSLog的%s格式说明符在系统编码中,似乎总是MacRoman而不是unicode,所以它只能显示MacRoman编码的字符。使用 NSLog 的最佳选择是使用本机对象格式说明符 %@ 并直接传递 NSString,而不是将其转换为 C 字符串。如果你只有一个 C 字符串,并且想要使用 NSLog 来显示消息而不是 printf 或 asl,则必须执行 Don 建议的操作,以便首先将字符串转换为 NSString 对象。

因此,所有这些都应该显示预期的字符串:

NSString *str = @"你好";
const char *cstr = [str UTF8String];
NSLog(@"%@", str);
printf("%s\n", cstr);
NSLog(@"%@", [NSString stringWithUTF8String:cstr]);

如果您决定使用 asl,请注意,虽然它接受 UTF8 格式的字符串并将正确的编码传递给 syslog 守护程序(因此它将在控制台中正确显示),但它会在显示到终端时对字符串进行可视化编码或记录到文件句柄,因此非 ASCII 值将显示为转义字符序列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSLog 编码错误 的相关文章

  • 如何在iPhone模拟器中更改时间和时区?

    如何更改时间和时区iPhone http en wikipedia org wiki IPhone模拟器 我猜它使用您的系统时区 因此更改系统偏好设置中的 TZ 可能会成功
  • Objective-c:如何创建不同深浅的颜色

    是否有任何算法可以为给定的十六进制或 RGB 值创建不同的阴影 我尝试过增加和减少 alpha 但浅色 例如 白色 看起来不太好 实现此目的的最佳方法是使用 HSB 色彩空间 这就是我在最新的应用程序中完成键盘左手部分的方式 颜色的 阴影
  • 检查 Objective-C 中从 JSON 字符串返回的空值

    我有一个JSON来自网络服务器的对象 日志是这样的 status success UserID 15 Name John DisplayName John Surname Smith Email email Telephone null F
  • 为什么 UIScrollView 在顶部留有空间并且不滚动到底部

    我是 Objective C 编程新手 我正在使用 UIScrollView 及其上的一些标签 图像和文本视图 我已关闭自动布局 并已尝试打开 调整滚动视图插图 标题中描述的情况 和关闭 不滚动 这是我插入 viewDidLoad 的内容
  • UIPageControl 未显示

    我使用以下内容来显示滚动视图和页面控制 scrollView UIScrollView alloc initWithFrame CGRectMake 0 0 320 179 pageControl UIPageControl alloc i
  • 在ios中通过社交框架登录Facebook

    我是 iOS 开发新手 我必须将 Facebook 登录集成到我的 iOS 应用程序中 当用户登录时 它会获取所有信息并将其导航到主屏幕 我已经通过 Facebook 最新的 SDK 完成了此操作 但我希望通过社交框架完成此操作 我浏览了很
  • 我可以通过编程方式获取连接到手机的 wifi 的 MAC 地址吗?

    我的手机已连接到 wifi 我想获取我的 wifi 的 MAC 地址 BSSID 和 mac 地址是同一回事 您可以通过此函数获取 mac 地址 只需导入 SystemConfiguration CaptiveNetwork func ge
  • 如何在目标c中从网络提供商获取用户的当前位置?

    在离线模式下如何获取用户在ios中的当前位置 是否可以通过网络提供商获取位置 我给你完整的解决方案 如果你想实现这一点 你应该使用核心定位框架 第一步 在 h文件中导入CoreLocation框架 import
  • NSUndoManager 会撤消后台发生的更改吗?

    我有一个编辑视图控制器 我正在使用 NSUndoManager 它是我的持久性存储 核心数据项目 的一组 我的应用程序的功能之一是与外部服务器同步 我想知道的是 如果我正在视图中编辑某些内容 同时应用程序正在与服务器同步 如果我改变主意并决
  • 使用动画更改 UIView 背景颜色

    我想改变我的UIView带有过渡动画的背景颜色 例如 如果视图是红色的 我将其更改为蓝色 蓝色将从屏幕底部向上滑动到顶部并充满整个屏幕 我想通过制作一个来做到这一点UIView具有相同大小和所需颜色 然后将其从屏幕外一直动画到顶部 但这似乎
  • 左右并排放置两个 UILabels,而不知道左标签中文本的字符串长度

    在 iPhone fb 应用程序的照片选项卡中 对于每个表格视图单元格 他们都会放置相册标题 后跟相册中的图片数量 例如 第一张专辑 22 最后也是最后的 12 我认为有两个标签 一个用于标题 一个用于数字 因为数字实际上是不同的 UICo
  • 主队列上的dispatch_sync 与dispatch_async

    请耐心等待 这需要一些解释 我有一个类似于下面的函数 上下文 aProject 是一个名为 LPProject 的核心数据实体 其数组名为 memberFiles 其中包含另一个名为 LPFile 的核心数据实体的实例 每个 LPFile
  • iOS:在代码中访问 app-info.plist 变量

    我正在开发通用应用程序 并且希望访问代码中 app info plist 文件中存储的值 原因 我使用以下方法从故事板动态实例化 UIViewController UIStoryboard storyboard UIStoryboard s
  • 尝试将 indexPath 保存到 NSUserDefaults 时出错

    我试图保存 UICollectionView 的索引路径 但出现以下错误 libc abi dylib terminating with uncaught exception of type NSException 我的代码是 保存索引路径
  • 如何检查 uiviewcontroller 是否存在于 uinavigationcontroller 堆栈中

    我有一个UINavigationController 我必须从 a 中弹出一个视图UINavigationController并将其替换为另一个视图 我们如何才能搜索到一个UIViewController对象并将其替换为另一个 当我打印时
  • 在 xcode 4 中找不到 info.plist

    所以常规介绍 我是 Objective C 的新手 到处搜索但找不到 所以请帮忙 我想做的就是将我的应用程序设置为在后台获取位置更新 就是这样 我知道我应该在项目的 info plist 文件中将位置添加到 UIBackgroundMode
  • iOS 8 UITableView 分隔符插入 0 不起作用

    我有一个应用程序 其中UITableView的分隔符插入设置为自定义值 右0 Left 0 这完美地适用于iOS 7 x 但是在iOS 8 0我看到分隔符插入设置为默认值15在右侧 即使在 xib 文件中它设置为0 它仍然显示不正确 我该如
  • 在 ios wifi 网络上查找对等点

    我试图弄清楚如何搜索登录到 wifi 网络且在特定端口上托管应用程序的其他设备 在不知道这些其他设备的地址甚至不知道它们托管的端口的情况下 如何检测它们的存在 一旦发现 我应该能够联系该设备并与其建立连接 最标准的 iOS方式 是使用Bon
  • 目标操作 uicontrol 事件

    我一定在这里遗漏了一些明显的东西 但是 UIControl有一个方法 void addTarget id target action SEL action forControlEvents UIControlEvents controlEv
  • 为什么我的 x 轴在 iPhone 上不显示核心图?

    编辑 我认为我的问题更好地表述为 我怎样才能有一个不从零开始的 Y 轴 看起来 x 轴总是放置在 y 0 处 但我希望 x 轴位于 y 轴上的某个正数 这是一张包含更多常规数据的图表 我只是希望将 x 轴放置在绘图的最小 y 值 大约 77

随机推荐

  • 我想要表格格式的选择查询结果,例如摘要报告

    例如 month1 month2 month3 total district1 5 2 9 16 district2 1 0 11 12 total 260 150 140 550 这里最终的总数并不重要 但至少我需要显示每个地区每月的数量
  • 以非 root 用户身份在 UserData 中运行命令

    我正在尝试使用 EC2 UserData 脚本安装气流 我需要使用非 root 用户 ec2 user 运行一些命令 请参阅下面的脚本 UserData Fn Base64 Sub bin bash set xe Install GCC y
  • JavaFX 8:拦截应用程序“退出”

    为了验证用户所做的所有更改是否已保存 我想拦截 JavaFX 应用程序的退出 退出 是否有一种通用的方法来实现这一目标 例如覆盖事件 或者还有更多方法吗 正如他们已经说过的 这是通过拦截来完成的WindowEvent WINDOW CLOS
  • 在 Android 编辑文本字段中显示一条消息

    海 我有一个带有一个文本字段的 Android 程序 当它加载到模拟器上时 我需要在该文本字段内显示一条消息 当用户在该文本框中单击时 该消息应该消失 例如 请输入姓名 任何人都可以在这里发布一些示例代码吗 只需使用或致电setHint在物
  • 设备中的嵌套资源

    我是 Rails 新手 我想要一些关于我的路线和正确的路由逻辑的建议 我正在开发一个非常简单的应用程序 用户可以在其中发布列表 用户 设计模型 有很多列表 并且该列表属于一个用户 我的列表中有一个 user id integer 当用户成功
  • Elasticsearch 崩溃后无法恢复

    磁盘空间不足 导致 Elasticsearch 分片崩溃 三个节点现在为红色 两个节点已恢复 它们的状态为黄色 ES 的 CPU 利用率为 150 内存利用率很高 正在尝试恢复它们 但似乎存在一些版本匹配冲突 我清理了磁盘空间并删除了分片的
  • 如何在doctrine2查询生成器where语句中添加运算符

    我试图从一个表中进行选择 其中所选持续时间除以条目持续时间等于没有余数 qb em gt createQueryBuilder gt from AcmeBlogBundle Entry e gt andWhere duration e du
  • Android 和 PhoneGap——在 NPObject 上调用方法时出错

    我正在尝试设置FLAG SHOW WHEN LOCKED在我的phonegap应用程序中 但仅当显示特定页面时 为此 我有一个 Java 插件 扩展自CordovaPlugin在以下代码中execute method if action e
  • MySQL Workbench 连接编码

    在测试一些代码时 我偶然发现了以下 MySQL 错误 Error Code 1267 Illegal mix of collations utf8 general ci IMPLICIT and utf8mb4 general ci COE
  • PHP GD库调整照片大小

    我正在尝试使用 PHP 的 GD 库创建照片的缩略图 以下是我正在采取的步骤 创建GD图像 资源 获取图像的高度和宽度 创建一个空白的 gd 图像资源 高度为 100 像素 宽度适当 将资源图像复制到空白 gd 图像资源并保存这两个图像 这
  • 根据长度将字符串拆分为包含 1-3 个单词的字符串数组

    我有以下输入字符串 Lorem ipsum dolor sat amet consectetur adipiscing elit sed doeiu smod tempor incididunt ut Duis aute irure dol
  • 如何指定 Perl 的 Inline::Python 模块正在使用的 Python 版本?

    我正在运行 Debian squeeze 和 perl v5 10 1 并且安装了两个版本的 python pyversions i python2 5 python2 6 Python Inline显然使用python2 5 perl u
  • 如何在 Netbeans 中向 C++ 项目添加运行参数

    我正在使用 Netbeans 7 0 及其 C 插件 我想做这样的事情 test exe lt in txt gt out txt当我运行该项目时 在 Netbeans 中哪里可以将这些参数添加到项目中 提前致谢 Under File Pr
  • 如何有效地读取屏幕上的数字(pytesseract)?

    我正在尝试读取屏幕上的数字 为此我正在使用 pytesseract 问题是 尽管它有效 但它的作用很慢 而且根本不会产生好的结果 例如 对于这张图片 我可以制作这个阈值图像 它读取的是 5852 而不是 585 这是可以理解的 但有时使用不
  • 解决 Django 的 make_aware 中的 AmbigouslyTimeError

    我有一个代码如下 from django utils timezone import get current timezone make aware make aware some datetime get current timezone
  • 我不明白这个 fork() 的例子

    我有这个代码示例 但我不明白为什么这段代码会创建 5 个进程加上原来的进程 总共6个过程 include
  • Rails Routes - 限制资源的可用格式

    我有一系列资源 我只想通过 JS 格式访问这些资源 Rails 的路线资源为我提供了格式和标准 HTML 有没有办法指定只创建JS格式的路由 您必须将这些路由包装在一个范围内 不幸的是 在这种情况下 约束不能按预期工作 这是此类块的一个示例
  • IntelliJ + Groovy + Spock:没有为模块定义 Groovy 库

    我一直在尝试在 IntelliJ IDEA 中创建一个带有 Spock 测试的 Groovy 项目 以下是我遵循的步骤 创建 Groovy 项目并添加 Maven 支持 添加了 Spock 依赖项和插件 我使用的 POM 与此非常相似 ht
  • Android 底部导航栏重叠 Spinner。设置微调器下拉高度/边距

    我在处理 Android Honeycomb 项目时偶然发现了一个有趣的问题 如下图所示 在对话框中展开微调器时 底部的导航栏会与其重叠 因此 无法选择底部的元素 为了解决这个问题我尝试使用android fitsSystemWindows
  • NSLog 编码错误

    我的以下代码有问题 NSString strValue 你好 char temp 200 strcpy temp strValue UTF8String printf s temp NSLog s temp 代码第一行有两个汉字被双引号括起