如何将字符串(例如“iso-8859-1”)转换为其 String.Encoding 对应项?

2023-12-08

从 Swift 发送 HTTP 请求后,我在响应中得到一个名为textEncodingName.

我想转换data我还收到了一个包含其内容的字符串,为此,我使用String(data: data!, encoding: .utf8)。这在大多数情况下都有效,因为大多数网站都是 UTF-8 编码的。但例如,https://www.google.co.uk, the response.textEncodingName == "iso-8859-1".

我猜其他网站会使用更晦涩的编码,所以我的问题是:如何找到正确的编码来转换我的data对象正确的字符串。


你可以简单地尝试String.Encoding.windowsCP1250 for iso-8859-1。请参考https://en.wikipedia.org/wiki/Windows-1250

String(data: data, encoding: .windowsCP1250)

OR..

我找到了一些步骤,可以帮助您从textEncodingName到对应的String.Encoding value:

let estr = "iso-8859-1"
let cfe = CFStringConvertIANACharSetNameToEncoding(estr as CFString)
let se = CFStringConvertEncodingToNSStringEncoding(cfe)
let encoding = String.Encoding(rawValue: se)

这主要基于以下文档URLResponse.textEncodingName:

您可以通过调用 CFStringConvertIANACharSetNameToEncoding(:)。随后,您可以通过调用 CFStringConvertEncodingToNSStringEncoding(:).

这是一个更新,用于检查原始文本编码字符串是否有效:

let estr = "XXX"
let cfe = CFStringConvertIANACharSetNameToEncoding(estr as CFString)
if cfe != kCFStringEncodingInvalidId {
    let se = CFStringConvertEncodingToNSStringEncoding(cfe)
    let sse = String.Encoding(rawValue: se)
    print("sse = \(sse)")
} else {
    print("Invalid")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将字符串(例如“iso-8859-1”)转换为其 String.Encoding 对应项? 的相关文章

随机推荐

  • “使用命名空间 std;”没有任何#include? [复制]

    这个问题在这里已经有答案了 我尝试遵循 它工作没有问题 但在这种情况下 std 没有定义 using namespace std int main 你的代码是非法的 指示using只能提名先前声明的命名空间 即可以通过名称查找找到名称的命名
  • 删除 div 时的 Bootstrap 网格布局

    因此 我正在使用一个仪表板外观 它可能有四个可以打开的 方块 并且角色取决于用户角色 顶行通常保留原样 因此其宽度约为 30 另一行的宽度约为 70 这可以 但是 在仪表板的底行 您可以有两个正方形 当这两个都打开时 我当前的网格设置工作得
  • 过滤对象中的多个值

    我需要按多个值过滤对象 对象示例 items url https id 1693 type ABC currencyCode SEK longName Abc name ABC micCode DEF listingDate 2018 05
  • 使用 numpy 进行数组重新分类

    我有一个包含 10 位数字的大型 50000 x 50000 64 位整数 NumPy 数组 数组中大约有 250 000 个唯一数字 我有第二个重新分类表 它将第一个数组中的每个唯一值映射到 1 到 100 之间的整数 我希望将第一个数组
  • 无法从 Orchard 模块中的项目文件夹加载图像

    我正在尝试在 Orchard 模块中插入图像 但遇到了一些问题 img src Href Modules Orchard Slider Content img other jpg gt 在我看来 我写了这个 但是图像没有加载 它说找不到资源
  • 如何修复 jslint The '&&' subexpression should bewrapped in parens 错误

    我将所有内容都放在括号中 但下面的代码仍然在 jslint 中抛出错误 Problem at line 5 character 104 The subexpression should be wrapped in parens if typ
  • .htaccess 导致所有页面被下载

    我添加了以下行 htaccess AddType application x httpd php html htm 当我尝试加载侧面的任何页面时 我的浏览器会尝试下载该页面 我究竟做错了什么 Thanks 最有可能的 您没有为您的网络服务器
  • 将 JLabels 置于 JPanel 中心

    我正在制作一个记分程序 但遇到了问题 我试图做的是在顶部有一个 JPanel 其中包含两个 JPanel 而 JPanel 又包含两个团队名称 我很困惑为什么程序顶部的两个 JLabel 没有位于它们所包含的 JPanel 内部的中心 im
  • c_str 的使用是否带有异常未定义行为?

    我见过几个类似的代码片段 如下所示 struct MyExcept std exception explicit MyExcept const char m noexcept message m const char what const
  • 如何运行在关闭 PuTTY SSH 会话后仍然运行的 Linux 命令?

    我通过 putty 连接到我的 NAS 它在上面运行 Linux 我想将一个大目录从一个位置移动到另一个位置 关闭 Putty 会话后是否可以保持进程运行 我担心如果我关闭腻子 文件将不会被复制到最后 使用 nohup 开始任务 并使用 将
  • jQuery ui 选项卡中的多个 jQgrid

    我遇到一个问题需要帮助 我有 3 个 jQueryUI 选项卡 第一个包含项目网格 第二个保存工单网格 第三个只是发出警报以验证显示功能是否正常工作 问题是我在第二个选项卡上没有网格 第一个负载正常 如果我注释掉第一个选项卡的代码 第二个网
  • Ruby on Rails:自定义操作

    我是rails新手 所以我向你解释一下我的情况 我有一个用户模型和一个用户控制器 用户使用电子邮件地址和密码登录 特殊用户可以通过在表单中 输入受邀者的电子邮件地址并点击提交来邀请其他用户 然后 受邀用户会收到一封邮件 其中包含用于激活其帐
  • MySQL RAND() 种子值几乎重复

    在 Windows 7 上使用 MySQL 5 6 21 我试图从按日期播种的表中返回 随机 行 因此同一行返回当天 然后切换第二天等 如果您愿意 可以是 当天生成器的随机引用 我注意到相同的行不断出现 因此我将查询简化为基础 看来 RAN
  • GO - WaitGroups 参考中的指针或变量

    根据sync包中的以下函数声明 添加 gt func wg WaitGroup Add delta int 完成 gt func wg WaitGroup Done 等待 gt func wg WaitGroup Wait 我知道它们都是由
  • 如何自动启动 Android 应用程序?

    我不确定如何在 Android 模拟器完成启动后自动启动 Android 应用程序 有人有任何代码片段可以帮助我吗 您必须添加清单权限条目
  • JPA @EmbeddedId:如何更新复合主键的一部分?

    我有一个多对多关系 其中链接表有一个附加属性 因此 链接表也由实体类表示 称为Composition 主键为Composition is an Embeddable链接到相应的实体 例如 2 ManyToOne参考 用户在选择两个引用中的任
  • 通过对其他列数据进行随机采样来创建新列

    我想通过从剩余列中随机采样数据来创建一个新列 考虑一个具有 N 列的数据框 如下所示 Column 1 Column 2 Column N 0 37 0 8 0 0
  • HTML 助手值得与复杂的标记一起使用吗?

    我应该坚持使用 HTML 助手 还是只使用纯 HTML 我使用 HTML 助手已经有一段时间了 并且非常喜欢使用它们 最近我开始使用 CSS 框架 例如推特引导程序我发现我的标记太复杂 无法使用标准 HTML 帮助程序 当然我还是用Url
  • 在 Shiny 中使用多个 tabPanel 时如何包含 showModal 和 modalDialog (如弹出窗口)

    我正在努力创建一个由多个选项卡组成的闪亮窗口 每个选项卡内都有一个下面的表单shinysurveys可以被填满 应用程序设计的代码可以显示选项卡及其内容 为了使应用程序提供更多信息 我想添加一条在每次单击 Tab1 时出现的消息 并且由于
  • 如何将字符串(例如“iso-8859-1”)转换为其 String.Encoding 对应项?

    从 Swift 发送 HTTP 请求后 我在响应中得到一个名为textEncodingName 我想转换data我还收到了一个包含其内容的字符串 为此 我使用String data data encoding utf8 这在大多数情况下都有