iOS 将网址中%形式的参数进行UTF8编码

这个链接中%形式的参数转换成中文

我们需要使用如下的方法

NSString *string_1 = [@"https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=%E6%88%91%E4%BB%AC"
stringByRemovingPercentEncoding];
    NSLog(@"%@",string_1);
复制代码

#将链接中的中文转换成%形式 方法一:

NSString *string_2 = [@"https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=我们"
stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet characterSetWithCharactersInString:@"我们"].invertedSet];
NSLog(@"%@",string_2);
复制代码

方法二:

NSString *urlStr = @"http://api.douban.com/v2/movie/nowplaying?app_name=doubanmovie&client=e:iPhone4,1|y:iPhoneOS_6.1|s:mobile|f:doubanmovie_2|v:3.3.1|m:PP_market|udid:aa1b815b8a4d1e961347304e74b9f9593d95e1c5&alt=json&version=2&start=0&city=北京&apikey=0df993c66c0c636e29ecbb5344252a4a";
NSString *urlEncode = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
复制代码

转载于:https://juejin.im/post/5c1a0dfbf265da611f07a422

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先确保您使用的是最新版本的jsoncpp库。然后,您需要在读入文件时将文件编码设置为UTF-8。您可以使用以下代码实现: ``` std::ifstream ifs("file.json", std::ios::in | std::ios::binary); ifs.imbue(std::locale(std::locale(), new std::codecvt_utf8<wchar_t>)); ``` 最后在读取文件的时候,使用Json::Reader来读取文件,将其的内容解析到Json::Value。 ``` Json::Value root; Json::Reader reader; reader.parse(ifs, root); ``` 如果上述方法不能解决问题,建议您检查您的文件是否真的是UTF-8编码。 ### 回答2: 要解决jsoncpp读入UTF-8编码文乱码问题,可以采取以下步骤: 1. 确保输入的JSON文件或字符串是以UTF-8编码保存的。可以使用文本编辑器打开文件并检查文件编码格式。 2. 确保代码正确设置了JSONCPP的编码方式。在使用jsoncpp库之前,可以通过设置JSONCPP的编码方式为UTF-8来解决乱码问题。可以使用以下代码: ``` Json::CharReaderBuilder readerBuilder; readerBuilder["collectComments"] = false; std::unique_ptr<Json::CharReader> const reader(readerBuilder.newCharReader()); Json::Value root; std::string jsonStr = jsonFileContent; // 假设jsonFileContent为从文件读取的JSON字符串 std::string errs; bool parsingSuccessful = reader->parse(jsonStr.c_str(), jsonStr.c_str() + jsonStr.size(), &root, &errs); ``` 这段代码,使用`readerBuilder`设置了`collectComments`为false,然后使用`newCharReader`方法创建了字符读取器,最后通过`parse`方法解析JSON字符串。如果JSON文字符仍然乱码,可以尝试设置其他选项,如使用`readerBuilder["strictRoot"] = false;`来放宽解析器对JSON的限制。 3. 确保读取JSON文件时使用了正确的编码方式。在使用jsoncpp读取JSON文件时,可以通过打开文件时指定编码方式来解决乱码问题。例如,可以使用以下代码指定文件编码为UTF-8: ``` std::ifstream ifs(filePath, std::ifstream::binary); std::stringstream buffer; buffer << ifs.rdbuf(); std::string str = buffer.str(); ``` 这样可以确保读取到的文件内容是以指定的UTF-8编码方式保存的。 通过上述步骤,可以解决jsoncpp读入UTF-8编码文乱码问题。如果问题仍然存在,可能是由于其他原因导致的乱码,可以尝试查看JSON数据和处理代码的其他部分,以确定根本原因并进行相应的解决方案。 ### 回答3: JSONcpp库在读取或解析utf-8编码文时可能会出现乱码问题。解决此问题的方法如下: 1. 确保所读取的JSON文件是以utf-8编码保存的。可以使用文本编辑器(如Notepad++)打开文件,然后通过“编码”菜单确认编码格式。 2. 在读取JSON文件之前,使用合适的方法将其内容换为utf-8编码。可以使用第三方库,如iconv或libiconv,将其换为utf-8编码。 3. 设置合适的JSONcpp配置选项,以正确地解析utf-8编码的字符串。可以使用以下代码进行设置: ```cpp Json::CharReaderBuilder builder; builder["collectComments"] = false; // 可选设置,仅保留此行注释即可 std::unique_ptr<Json::CharReader> reader(builder.newCharReader()); Json::Value root; std::string errs; bool parsingSuccessful = reader->parse(jsonString.c_str(), jsonString.c_str() + jsonString.size(), &root, &errs); ``` 在上面的代码,`jsonString`变量是包含JSON数据的字符串。通过设置`builder`对象的参数,可以在解析过程正确地处理utf-8编码文字符。 4. 在输出或使用JSONcpp库返回的结果时,根据需要将utf-8编码换为其他编码格式。可以使用第三方库或内置的编码换函数将utf-8编码的字符串换为其他编码格式,如GBK、UTF-16等。 以上是解决JSONcpp读取utf-8编码文乱码的常见方法。根据具体的需求和环境,可以选择适合的处理方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值