NSAttributedString initWithHTML 字符编码不正确?

2024-03-07

-[NSMutableAttributedString initWithHTML:documentAttributes:]似乎破坏了特殊字符:

NSString *html = @"“Hello” World"; // notice the smart quotes
NSData *htmlData = [html dataUsingEncoding:NSUTF8StringEncoding];
NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithHTML:htmlData documentAttributes:nil];
NSLog(@"%@", as);

那打印“Hello†World接下来是一些 RTF 命令。在我的应用程序中,我将属性字符串转换为 RTF 并将其显示在NSTextView,但那里的字符也被损坏了。

根据文档,默认编码是UTF-8,但我尝试明确,结果是相同的:

NSDictionary *attributes = @{NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]};
NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithHTML:htmlData documentAttributes:&attributes];

Use [html dataUsingEncoding:NSUnicodeStringEncoding]创建 NSData 并在将 HTML 解析为属性字符串时设置匹配的编码选项:

的文档NSCharacterEncodingDocumentAttribute有点令人困惑:

NSNumber,包含一个 int 指定NSStringEncoding为了 文件;用于读取和写入纯文本文件以及写入 HTML; 纯文本的默认值是默认编码; HTML 的默认值是 UTF-8。

所以,你的代码应该是:

NSString *html = @"“Hello” World";
NSData *htmlData = [html dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                    NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)};
NSMutableAttributedString *as =
    [[NSMutableAttributedString alloc] initWithHTML:htmlData
                                            options: options
                                 documentAttributes:nil];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSAttributedString initWithHTML 字符编码不正确? 的相关文章

  • Swift NSViewController 响应 mouseDown 事件,但不响应 keyDown 事件

    我正在尝试使用 Swift 和 Cocoa 创建一个适用于 OS X 的应用程序 我希望应用程序能够响应关键事件 而不将焦点放在文本字段上 中 我在 Xcode 中创建了一个带有故事板的新 Cocoa 项目 并将 ViewControlle
  • activeProcessorCount 和processorCount 之间有什么区别?

    The NSProcessInfo类有两个名为processorCount and activeProcessorCount 该文档对于处理核心和活动处理核心之间的区别尽可能没有帮助 或者 换句话说 什么才算是一个inactive可可的处理
  • 如何在可可中使用核心动画对 png 序列进行动画处理(非触摸)

    我想在 NSImageView 中对 png 序列进行动画处理 但我无法使其工作 它只是不想显示任何动画 有什么建议吗 这是我的代码 void imageAnimation NSMutableArray iconImages NSMutab
  • 如何将 Cocoa 应用程序移植到 iPhone-OS?

    我即将创建一个 Cocoa 应用程序 我想确保有一天我可以轻松地将它移植到 iPad 甚至 iPhone 我该如何提前计划 我知道我将不得不重做所有 NIB 并可能设计一个不同的工作流程 但是代码呢 仅仅用 UIsomething 替换每个
  • 在 Swift 3 中以编程方式创建没有 XIB 的 NSViewController

    我正在尝试在不使用 Interface Builder 的情况下制作 macOS 应用程序 我的项目已构建并运行 但我的主视图控制器似乎没有加载其视图 那就是viewDidLoad 方法未被调用 我正在使用 Xcode beta 8 0 b
  • NSTextField 委托通知——如何获取文本?

    我一直在尝试学习使用 Xcode 但我对如何注册感到困惑NSTextField已经改变 本质上 我有一个NSTextField和一个按钮 单击该按钮会填充字段中的文本 但是 我希望能够获取该字段的文本 而无需使用文本字段 操作 结束编辑时发
  • 如何设置 NSAttributedString 的字体大小

    编辑 这已被标记为重复 但正如我在下面所述 我正在寻找一个 Swift 解决方案 我发现的所有内容都是用 Objective C 编写的 我正在尝试将 HTML 转换为 NSAttributedString 但不知道如何设置字体样式和大小
  • 如何显示从 xib 加载的工作表? (MacOSx)

    我有一个 xib 文件 其中只有一个 NSPanel 我试图将此面板显示为模式表 带有beginSheet modalForWindow modalDelegate didEndSelector contextInfo 该 xib 文件的所
  • 阻止 NSView 实例接收鼠标事件

    我在窗口中有一个 NSView 并且核心动画层已打开 我时常使用此视图来显示带有动画的图像 我需要整个视图作为后层 而不仅仅是图像 在这个我称为 AnimationBaseView 的视图后面是用户交互的其他视图 一切都很好 除了 Anim
  • 转换任何对象?到字符串

    我有一个返回 AnyObject 的函数 func aFunction param String gt AnyObject 如何将其转换为字符串 和字符串 尝试这个 if let result aFunction test as Strin
  • Objective C - 如何从 NSAttributedString 创建 rtf

    我可以使用以下方法从 rtf 字符串转换为属性字符串 NSAttributedString attributedStr NSAttributedString alloc initWithData data options NSDocumen
  • [NSDictionary getObjects:andKeys:] 的示例

    我找不到该方法的工作示例 NSDictionary getObjects andKeys 唯一的example http www mail archive com cocoa dev lists apple com msg24959 htm
  • 经常访问 NSUserDefaults

    在我的应用程序的逻辑处理过程中 我需要频繁访问用户首选项 并多次访问 10 15 次 以确定需要处理什么以及如何处理 也许这个问题不是关于性能的问题 而是关于正确执行的问题 目前我正在做一个 NSUserDefaults standardU
  • 什么时候需要 NSCopying?

    我知道如果您的对象将用作 NSDictionary 中的键 则需要它 还有其他类似的情况需要 NSCopying 吗 如果我认为我不需要我的模型对象符合 NSCopying 我可能是错的吗 将 NSCopying 协议视为克隆例程的 Obj
  • 如何创建自定义模式 NSWindow?

    我想创建一个充当模式对话框的自定义 NSWindow 我所说的自定义是指它在窗口中有正常的用户控件 带有 确定 和 取消 按钮 该对话框将包含只读信息 并有一些复选框 安全编辑字段等 MainMenu xib 文件将具有在启动时可见的普通窗
  • 具有多列的 NSTableView

    有什么简单的方法可以将我的 NSTableView 设置为多列以仅在一列中显示某些数据 我已经设置了 IBOutlets 但我不知道从哪里开始 假设您没有使用 Cocoa Bindings Core Data 您可以通过实现以下两个方法来在
  • 在核心数据中伪造动态模式?

    通过阅读有关 Core Data 的 Apple 文档 我了解到当您需要动态模式时不应该使用 Core Data 如果我想为用户提供创建自己的属性的能力 那么在核心数据模型中 如果我创建一些 虚拟 属性 例如 自定义十进制 1 自定义十进制
  • 如何使虚线可移动

    我用下面的代码画了一条虚线 get the current CGContextRef for the view CGContextRef currentContext CGContextRef NSGraphicsContext curre
  • CoreMediaIO,错误更新的属性 kCMIODevicePropertyDeviceIsRunningSomewhere

    当某些进程开始使用相机时 我需要接收一个事件 我通过 CMIOObjectGetPropertyData 完成此操作 但它不能正常工作 只有第一次访问时才是正确的值 我还尝试使用 CMIOObjectAddPropertyListenerB
  • NSArrayController 无需将大型数据集加载到数组中

    我想使用 NSArrayController 向 NSTableView 提供数据 我面临的问题是我不想将所有数据预先加载到数组中 然后使用数组控制器setContent 方法 我的数据模型是一个管理数百万条记录的大型现有代码库 它包含有效

随机推荐

  • VideoView的setVideoPath和setVideoURI有什么区别

    视频查看 http developer android com reference android widget VideoView html有两种不同的方式来指定要播放的视频 设置视频路径 http developer android c
  • 如何在仅引用数据的表中循环

    我正在使用功能模块RSAQ QUERY CALL 取回一张桌子 DATA gr data TYPE REF TO data CALL FUNCTION RSAQ QUERY CALL EXPORTING query ZXXXXXXXX us
  • 通过 docker 实现 RSelenium

    我的操作系统是windows 8 1 R的版本是3 3 3 我已经安装了 RSelenium 软件包 并尝试使用以下命令运行它 library RSelenium start RSelenium server startServer che
  • 如何在步骤 1 中单击“下一步”时让 JQuery-Steps 调用 ajax 服务

    我正在使用 jquery 步骤 尽管我需要在单击第一个 下一步 时通过 ajax 调用 c 服务 但这是否可以在显示步骤 2 之前调用并返回 尽管 ajax 事件在加载步骤 2 后返回 但以下代码仍然有效 非常感谢 感谢任何帮助 Jquer
  • Java 形式类型参数定义(泛型)

    我想定义一个泛型类型 其实际类型参数只能是 数字基元包装类之一 Long Integer Float Double String 我可以用这样的定义满足第一个要求 public final class MyClass
  • 以编程方式重新启动设备

    在我的 Android 应用程序中 我想在单击按钮时重新启动我的 Android 设备 但它不起作用 到目前为止我已经做到了 ImageButton restartmob ImageButton this findViewById R id
  • 传单图块在移动设备上加载不正确

    我遇到了传单地图在移动设备上加载不正确的问题 该地图的加载纬度 经度为 25 748503 80 286949 迈阿密市中心 但在移动设备上加载的纬度 经度约为 25 584223 80 028805 大西洋沿岸 将地图拖回到正确的位置似乎
  • 我可以将 terraform 输出设置为环境变量吗?

    因此 terraform 生成了一堆我感兴趣的输出 如何将这些值通过管道传递给环境变量或其他东西 以便我的脚本能够在有人运行后获取它们terraform apply Terraform 无法直接修改调用它的 shell 的环境 一般来说 程
  • 在谷歌地图中为每个国家提供不同的颜色

    有谁知道如何在谷歌地图中为每个国家提供不同的颜色 e g 在世界地图上 蓝色覆盖英国 然后红色中国 等 我想知道google是否提供API来为每个国家提供颜色 Thanks 使用谷歌地图这确实不容易 正如 oezi 所说 你需要为你想要着色
  • 使用以位集作为键的映射时出现问题

    我正在尝试创建一个map在 C 中bitset作为钥匙 但是编译器会生成以下错误消息 In file included from usr include c 4 6 string 50 0 from usr include c 4 6 bi
  • Presto 中的用户定义函数

    我目前正在使用 Presto 0 80 我必须编写一个用户定义的函数来在选择查询期间将摄氏度转换为华氏度 我使用 Hive QL 做了同样的事情 但想知道我们是否可以在 Facebook Presto 中复制相同的内容 任何帮助将不胜感激
  • GAE组织数据结构问题

    好的 我正在与 GAE 合作 我想创建这样的东西 我有类型 组 主题 标签 每个 组 可以有尽可能多的 根据需要 主题 每个 主题 可以有任意多个 标签 如所须 每个 组 可以有任意多个 标签 如所须 它就像一个圆圈 现在我有这样的事情 c
  • QuickDraw 中的 python3 递归动画

    我有一个文本文件 其中包含行星及其相应的卫星 卫星以及它们的轨道半径和周期 我想用它来创建动画quickdraw类似于下面的 文本文件如下 RootObject Sun Object Sun Satellites Mercury Venus
  • 如何通过 Golang 的 json 解组嵌套数组中的对值

    JSON 数据如下 xxx xxx asks 0 00000315 1022 53968253 0 00000328 200 0 00000329 181 70008541 bids 0 00000254 2685 36319716 0 0
  • _PFBatchFaultingArray 对象索引:

    2012 06 15 17 53 25 532 BadgerNew 3090 707 Terminating app due to uncaught exception NSRangeException reason PFBatchFaul
  • 两个不同表中任意一个的参考键[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有以下两个表 employees id name address designation salary phone email bu
  • 使用MVC设计模式时如何加载重型模型

    我正在使用 wxPython 和使用 Tensorflow 创建的深度学习模型构建一个应用程序 我使用的设计模式是MVC 我的问题是深度学习模型非常重 需要很长时间才能加载 大约 2 分钟 同时 GUI 会挂起 我创建了一个描述该过程的示例
  • Typescript 中 `typeof x` 的类型是什么?

    在打字稿中 您可以像这样定义一个类 class Sup static member any static log console log sup 如果您执行以下操作 let x Sup 为什么 x 的类型等于typeof Sup 当我在 v
  • 以管理员身份运行与管理员组运行

    我有一个 C 应用程序 需要允许用户更改计算机名称 这是一项相当特权的操作 仅当用户以管理员身份运行应用程序 Windows 7 右键单击可执行文件 以管理员身份运行 时 我才能使其正常工作 很好 但是用户是管理员 那么为什么他们需要运行A
  • NSAttributedString initWithHTML 字符编码不正确?

    NSMutableAttributedString initWithHTML documentAttributes 似乎破坏了特殊字符 NSString html Hello World notice the smart quotes NS