将变音符号从 Node.js 发送到 iOS

2023-11-29


我不知道这是 Node.js 还是 iOS 问题,但是当我尝试发送包含变音符号(ä、ö 和 ü)的 JSON 对象时,设置的内容长度似乎是错误的。

这是我的设置:

我的 Node.js 服务器通过以下方式发送数据:

[..mongodb request..].toArray(function(err, result) {
    res.setHeader('Content-Type', 'application/json');
    var body = JSON.stringify(result);

    console.log(body);
    console.log(body.length);

    res.setHeader('charset', 'utf8');
    res.setHeader('Content-Length', body.length);
    res.end(body);
});

这会产生以下对象:

[
{
    "_id": "51da7eb5d5f9ad77302a26c6",
    "loc": [
        53.560994,
        9.929796
    ],
    "street": "Kühnehöfe 25",
    "time": 1373273781535
},
{
    "_id": "51da7eb9d5f9ad77302a26c7",
    "loc": [
        53.561899,
        9.930203
    ],
    "street": "Kühnehöfe 17",
    "time": 1373273785156
}
]

其长度(解析为字符串)为 215。这也被设置为内容长度。

在我的 iOS 项目中,我有以下设置:

-(void)serverRequest {

    // Initialize new mutable data
    NSMutableData *data = [[NSMutableData alloc] init];
    self.receivedData = data;

    // Initialize URL that is going to be fetched.
    NSURL *url = [NSURL URLWithString:@"http://localhost:8000/getSpots"];

    // Initialize a request from a URL
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[url standardizedURL]];

    // Set HTTP method
    [request setHTTPMethod:@"POST"];

    // Initialize post data
    NSDictionary* jsonDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:coordinate.latitude], @"lat", [NSNumber numberWithFloat:coordinate.longitude], @"lng", accessToken, @"accessToken", nil];//dictionaryWithObjectsAndKeys:coord.latitude, nil]
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict
                                                   options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                     error:&error];

    // Set request content type we MUST set this value.
    [request setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"content-type"];

    // Set post data of request
    [request setHTTPBody:jsonData];

    // Initialize a connection from request
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    self.connectionGetSpots = connection;

    // Start the connection
    [connection start];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [self.receivedData appendData:data];

    NSLog(@"loading: %d, %lld", [self.receivedData length], dataSize);  // Both 215 (correct)
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    dataSize = [response expectedContentLength];
    NSLog(@"dataSize: %lld", dataSize);  // is 215 (correct)
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    NSString *responseData = [[NSString alloc] initWithData:self.receivedData encoding:NSUTF8StringEncoding];
    NSLog(@"rD: %@, %d" ,responseData, [responseData length]);
}

The connectionDidFinishLoading函数记录以下内容:

[
{
    "_id": "51da7eb5d5f9ad77302a26c6",
    "loc": [
        53.560994,
        9.929796
    ],
    "street": "Kühnehöfe 25",
    "time": 1373273781535
},
{
    "_id": "51da7eb9d5f9ad77302a26c7",
    "loc": [
        53.561899,
        9.930203
    ],
    "street": "Kühnehöfe 17",
    "time": 13732737851
,211

正如您所看到的,JSON 对象中有四个变音符号,并且缺少四个字符。如果我添加另一个带有两个变音符号的位置,则会缺少两个字符。

我猜想某个地方的内容类型设置错误,但我不确定我必须做什么。


使用它来获得正确的 UTF-8 长度:

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

将变音符号从 Node.js 发送到 iOS 的相关文章

随机推荐

  • 游戏中心邀请立即失败

    我们在发送邀请时遇到问题GKGameCenterViewController 视图控制器打开得很好 但是当我们尝试向某人发送邀请时 它立即失败 两个帐户都启用了游戏中心邀请并通过GKGameViewController工作正常 这是我们用来
  • 使用 VBA 将 JSON 解析为 Excel

    我在 VBA 中解析 JSON 数据时遇到一些问题 我已经尝试了网上的所有示例 但仍然无法解决问题 我设法做的是使用另一个从另一个网站提取数据的 VBA 代码将 JSON 数据以原始格式提取到 Excel 中 我粘贴了下面有效的代码 它不是
  • 如果 diff'ing 不在存储库中,则没有选项可以忽略文件模式吗?

    我在一些自动化测试中使用 git 作为一种在 Linux 和 Windows 上使用相同语法的 diff 命令的简单方法 它工作正常 但由于我正在比较的文件位于共享驱动器上 我一直在偶然发现文件模式的差异被 不必要地 报告为更改 我环顾四周
  • WPF 选取框文本动画

    我可以滚动文本TranslateTransform但是当动画接近完成时我希望它再次开始 像蛇一样 这就是我所拥有的
  • 如何在SSIS中创建异步脚本组件?

    我可能是瞎子 但我不知道如何创建脚本组件 我不是问为什么要进行异步 如何使用它等等 我只是想知道如何将其添加到我的包中 或者如何将现有组件转换为异步组件 我正在使用 VS2008 和 MSSQL 2008 R2 我发现如何 进入脚本转换编辑
  • Windows Phone 8 推送通知推送通道始终创建新通道 uri

    我想检查我的推送通知实现是否正确 每次我打开我的应用程序 事实上 我只在特定页面上注册推送通道 因此每次我从该页面来回切换时 都会创建一个新的推送通道 URI 我将其存储在我的移动服务数据库中以发送将通知推送至 这对我来说似乎不正确 因为每
  • 矩阵转置和总体计数

    我有一个大小为 N 的方形布尔矩阵 M 按行存储 我想计算每列设置为 1 的位数 例如 对于 n 4 1101 0101 0001 1001 M stored as 1 1 0 1 0 1 0 1 0 0 0 1 1 0 0 1 resul
  • Dictionary 具有不同类型的委托:更清晰的非字符串方法名称?

    必须有一种更清洁的方法 目前我有 Constructor parseDictionary new Dictionary
  • 如果我在 index.php 之后输入参数,CSS 样式就会消失

    如果我在登陆页面 index php 后输入任何参数 我的 CSS 样式将停止工作 我正在运行 xampp 的开发本地主机服务器上添加 测试新代码 使用 php javascript html css 进行编码 编辑 我的开发服务器是 Wi
  • Vue 组件之间传递变量

    我刚刚开始学习 Vue js 需要帮助 我有两个组件 第一个组件不是第二个组件的父组件 我需要将变量从一个组件传输到另一个组件 我尝试过使用 props 坏主意 也许有人知道如何避免这种 家长 限制 首先请确保您已阅读并理解有关组件的 Vu
  • 将图像放置在 DIV 顶部并将其居中

    我有两个容器 一个灰色 一个白色 我想将图像 这将是一个向下的三角形 放置在白色背景的最顶部 并将其水平居中 我怎样才能做到这一点 我已尝试以下方法 但不起作用 See https jsfiddle net 63s86hf9 HTML se
  • 保存和加载测试以另一种方法对 NLTK 中的朴素贝叶斯分类器进行分类

    我已经尝试过这里的代码 将朴素贝叶斯训练分类器保存在 NLTK 中 我想将推文分为正类或负类 这是我的代码 learning py def main learning classifier nltk NaiveBayesClassifier
  • 如何有效地从 Spark 中的每一列中查找不同的值

    从每列中查找不同的值Array I tried RDD Array String map map Set reduce a b gt a zip b map case x y gt x y 执行成功 但是 我想知道是否有比上面的示例代码更有
  • watir 浏览器对象可以在以后的 Ruby 进程中重用吗?

    假设经常运行一个脚本来打开浏览器并执行 Web 操作 require watir webdriver browser Watir Browser new firefox profile gt botmode gt
  • 如何解决“OSError:告知位置被 next() 调用禁用”

    我正在创建一个文件编辑系统 并希望创建一个基于行的tell 函数 而不是基于字节的函数 该函数将在带有 open file 调用的 with 循环 内部使用 该函数是一个类的一部分 该类具有 self f open self file a
  • 如何在 Mac OS X Lion 上构建哈希(使用最新的 ffmpeg-devel)

    在 OSX 上构建 pHash 0 9 4 可能会很棘手 对于那些遇到问题的人 我下面有点冗长的回答可能会有所帮助 确保您的 macports 已完全更新并正常工作 这意味着最近的 Xcode 并在 Xcode 首选项 gt 下载 gt 组
  • 变量名“@Param”已被声明

    当用户单击搜索按钮两次以上时 我收到给定代码的以下错误消息 有人可以帮助我做错什么吗 变量名 Param 已经 已宣布 变量名必须是 在查询批次中是唯一的或已存储 程序 protected void btnSearch Click obje
  • SQL Server 2008 具有空间索引的可为空地理列的性能

    我在 SQL Server 2008 上发现一些奇怪的性能问题 该问题具有带有空间索引的可为空地理列 每个空值都作为根节点存储在空间索引内 例如 具有 5 000 000 个地址的表 其中存储了 4 000 000 个地址 每次查询索引时
  • 为什么连接表的一对多双向映射使用内连接和左外连接

    我正在关注 Hibernate 文档带有连接表的双向一对多之间Person实体和Address实体和我的映射文件与文档中给出的相同
  • 将变音符号从 Node.js 发送到 iOS

    我不知道这是 Node js 还是 iOS 问题 但是当我尝试发送包含变音符号 和 的 JSON 对象时 设置的内容长度似乎是错误的 这是我的设置 我的 Node js 服务器通过以下方式发送数据 mongodb request toArr