标签: nsstringencoding

iOS 5:如何将表情符号转换为unicode字符?

我想在iOS 5中将表情符号转换为unicode角色.

例如,转换 张开嘴和冷汗的笑脸\ue415.

我去NSStringEncodingNSString类参考.

在iOS 4的,NSUTF16BigEndianStringEncodingNSUTF32BigEndianStringEncoding给了我<e415><0000e415>分别,这是相当接近我想要的东西.

在iOS 5中,结果不同.它咆哮<d83dde04>而且<0001f604>.

我怎样才能得到\ue415张开嘴和冷汗的笑脸在iOS 5?谢谢.

objective-c emoji ios5 nsstringencoding

27
推荐指数
5
解决办法
5万
查看次数

Clang错误:对NSUTF8StringEncoding的引用不明确

我正在尝试使用Xcode 5中引入的新XCTest框架创建单元测试.我在我的一个测试用例中有一行看起来像这样:

XCTAssertEqual([self.client stringEncoding], NSUTF8StringEncoding, …);

当我尝试运行我的测试时,Xcode吐出了这个错误:"对NSUTF8StringEncoding的引用是模棱两可的." 我可以通过将以上行更改为此来使测试工作:

XCTAssertEqual([self.client stringEncoding], (NSStringEncoding) 4, …);

(这是因为4是值的NSUTF8StringEncoding.)当我分配NSUTF8StringEncoding给局部变量并在XCTAssertEqual()调用中使用它时,也会发生这种情况.为什么我收到此错误?

xcode nsstringencoding xctest

19
推荐指数
1
解决办法
920
查看次数

包含正斜杠/和HTML的字符串的NSJSONSerialization序列化未正确转义

我试图将一些简单的HTML转换为JSON对象中的字符串值,并且我无法使字符串编码无法转义NSJSONSerialization中的字符串.

示例...我有一个包含一些基本HTML文本的字符串:

NSString *str = @"<html><body><p>Samples / Text</p></body></html>";
Run Code Online (Sandbox Code Playgroud)

期望的结果是JSON,其中HTML为值:

{
    "Title":"My Title",
    "Instructions":"<html><body><p>Samples / Text</p></body></html>"
}
Run Code Online (Sandbox Code Playgroud)

我正在使用标准技术将NSDictionary转换为包含JSON的NSString:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:str forKey:@"Instructions"];
[dict setObject:@"My Title" forKey:@"Title"];

NSError *err;
NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&err];
NSString *resultingString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", resultingString);
Run Code Online (Sandbox Code Playgroud)

此方法生成的JSON有效,但HTML包含所有正斜杠转义:

{
    "Title":"My Title",
    "Instructions":"<html><body><p>Samples \/ Text<\/p><\/body><\/html>"
}
Run Code Online (Sandbox Code Playgroud)

这会在JSON字符串指令中创建无效的HTML.

我想坚持使用NSJSONSerialization,因为我们在我们的框架中的其他地方都使用它,并且在切换到非Apple库之前我已经被烧毁了,因为它们得不到支持.我尝试了很多不同的字符串编码,它们都逃脱了尖括号.

显然\ /是JavaScript中对/字符的有效表示,这就是转义正斜杠的原因(即使StackOverflow文本编辑器也将其转义).请参阅: 使用正斜杠转义json字符串? 还有JSON:为什么正斜线逃脱了?.我只是不希望它这样做,似乎没有办法阻止iOS在序列化时转义字符串值中的正斜杠.

json nsstring ios nsstringencoding nsjsonserialization

10
推荐指数
1
解决办法
7811
查看次数

二进制到Java中的文本

我有一个包含二进制数据的字符串(1110100)我想把文本输出所以我可以打印它(1110100会打印"t").我试过这个,它类似于我用来将我的文本转换为二进制文件,但它根本不起作用:

    public static String toText(String info)throws UnsupportedEncodingException{
        byte[] encoded = info.getBytes();
        String text = new String(encoded, "UTF-8");
        System.out.println("print: "+text);
        return text;
    }
Run Code Online (Sandbox Code Playgroud)

任何更正或建议将不胜感激.

谢谢!

java string encoding utf-8 nsstringencoding

7
推荐指数
3
解决办法
7万
查看次数

如何从NSString中删除最后一个unicode符号

我已经实现了与文本字段关联的自定义键盘,因此当用户按下删除按钮时,我从字符串中删除最后一个字符,并手动更新当前文本字段文本.

NSRange range = NSMakeRange(currentTextFieldString.length-1, 1);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

现在,问题是,用户可以选择输入一些特殊的unicode符号,这些不是1个字节,它们也可以是2个字节,现在按下删除按钮,我必须删除整个符号,但如果我按照上述方法,用户必须按两次删除按钮.

在这里,如果我这样做:

NSRange range = NSMakeRange(currentTextFieldString.length-2, 2);
[currentTextFieldString replaceCharactersInRange:range withString:@""];
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是,正常的字符,只有1个字节,一次被删除两次.

如何处理这种情况?

提前致谢.

编辑:

奇怪的是,如果我切换到iPhone键盘,它会适当地处理两种情况.必须有一些方法可以做到这一点,有一些我缺少的东西,但我无法弄清楚是什么.

iphone objective-c nsstring ios nsstringencoding

6
推荐指数
1
解决办法
2334
查看次数

保存在Core Data中后字符串长度更改

所以这是一个问题.

我有一个字符串

    ????? ????-0.fb2
Run Code Online (Sandbox Code Playgroud)

NSString方法长度返回16

在Core Data中保存字符串后(后端--sqlite)

NSString方法的长度返回17,但在视觉上字符串保持不变

    ????? ????-0.fb2
Run Code Online (Sandbox Code Playgroud)

显然方法是isEqualToString:返回NO

花了很多时间在实验中,我很遗憾这个问题是这封信:

    ?
Run Code Online (Sandbox Code Playgroud)

删除此信解决问题.

但它让我疯狂,为什么会发生这样的事情?

这里的解决方法有效,但不满足我:

  1. stringByReplacingPercentEscapesUsingEncoding: - 需要在db查询中和之后转换字符串
  2. 音译整个字符串 - 有点黑客

以及dosnt工作的解决方法:

  1. stringWithUTF8String
  2. 将转义的UTF8字符转换回原始格式

在Core Data中保存后,请帮助我了解字符串发生了什么.

还有更优雅的解决方案吗?

core-data objective-c nsstring nsstringencoding

5
推荐指数
1
解决办法
543
查看次数

stringWithUTF8String 自 iOS 8.2 更新以来返回 nil

我一直在使用 stringWithUTF8String 将我的 NSData 转换为 NSString,如下所示:

if ([[NSString stringWithUTF8String:[responsedata bytes]] isEqualToString:@"SUCCESS"]){
    dostuff...
}
Run Code Online (Sandbox Code Playgroud)

它运行良好;但是,自 8.2 iOS 更新以来,[[NSString stringWithUTF8String:[responsedata bytes]]返回 nil。

我通过使用以下代码解决了这个问题:

NSString *responseDataString = [[NSString alloc] initWithData:responsedata encoding:NSUTF8StringEncoding];

if ([responseDataString isEqualToString:@"SUCCESS"]){
    dostuff...
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下responsedata,打印的描述是相同的:<OS_dispatch_data: data[0x7aeb6500] = { leaf, size = 7, buf = 0x7c390360 }>

我的问题是:为什么第一个选项会返回 nil,为什么会在 iOS 8.2 更新后突然返回?

objective-c char-pointer ios nsstringencoding ios8.2

5
推荐指数
1
解决办法
1869
查看次数

"数据"类型的值?没有成员'base64EncodedStringWithOptions'

这里我编码我的字符串,但它给出了上述错误.我做的是:

let plainData = (password)?.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))
let base64String = plainData.base64EncodedStringWithOptions(NSData.Base64EncodingOptions.init(rawValue: 0))
Run Code Online (Sandbox Code Playgroud)

它给我第二行代码错误.如果有人可以帮忙!

ios nsstringencoding swift3

5
推荐指数
2
解决办法
5349
查看次数

如何正确使用NSPopUpButton

我有一个NSPopUpButton,我想用它来选择打开文件的文本编码.

我已经有了一些如何实现这一点的想法,但是当我开始学习Objective-C和Cocoa时,我几乎可以肯定有更好的方法可以实现我想要的.

我需要一个NSString,其中包含编码名称和相关的NSStringEncoding值.

我曾想过创建一个表示编码(名称和值)的类,并且有一个NSArray,其中包含这种类型的对象,然后使用数组的内容填充NSPopUpButton,但我认为应该有更好的方法.

我对NSDictionary类不是很熟悉,但我怀疑应该让事情变得更容易.

有人可以给我一个暗示吗?

cocoa objective-c nsdictionary nspopupbutton nsstringencoding

3
推荐指数
1
解决办法
4587
查看次数

处理iOS中的特殊字符,如(ö,Ä,é,ß)

我从URL获取数据,此数据包含特殊字符,例如名称中的字符Désirée.

我想在我的TableView单元格中显示它,但是当我显示它时,它看起来像这样:Dösiröe.

如何正确显示?

获取数据

NSString *jsonString = [NSString stringWithContentsOfURL:[NSURL URLWithString:URL] encoding: NSStringEncodingConversionAllowLossy error:nil];
SBJSON *parser = [[SBJSON alloc] init];
dictShow = [parser objectWithString:jsonString error:nil];
arr=[dictShow copy];
Run Code Online (Sandbox Code Playgroud)

在TableView中显示数据

cell.textLabel.text = [arr objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)

nsstring nsstringencoding

2
推荐指数
1
解决办法
1158
查看次数

从NSURLResponse检测NSStringEncoding的功能?

我只是想知道是否有任何现有的类别或任何类型的函数将从NSURLResponse对象返回NSStringEncoding常量.

我现在面临的问题是,当我将Web服务响应数据转换为String时,我将编码硬编码为NSUTF8StringEncoding然后它实际上会导致问题,因为我的Web服务有时会返回以UTF8编码的响应,有时以ASCII编码(好吧,我对所有的编码都不太确定,但是有时在响应中有其他语言字符,如日语,中文等)

所以我的想法是在NSURLResponse上有一个类别来检测编码并返回例如.

 NSURLResponse * response = // NSURLResponse object ( web service response headers )
 NSData * responseData = // NSData object ( web service response data )
 NSStringEncoding encoding = [response stringEncodingUsed];
 NSString * responseText = [[NSString alloc]initWithData:responseData encoding:encoding];
Run Code Online (Sandbox Code Playgroud)

iphone http objective-c nsstring nsstringencoding

2
推荐指数
1
解决办法
2441
查看次数

如何基于核心数据值在Objective C中生成随机字符串

我正在使用故事板和核心数据开发一个iPad应用程序.对于我的应用程序,我需要生成一个随机字符串,如'M000142140502343524',当单击一个按钮时,'tableA'的'data'字段中尚不存在.

core-data objective-c ipad ios nsstringencoding

2
推荐指数
1
解决办法
8242
查看次数

Swift编码和GET参数

我有一个简单的GET登录请求.用户名是Silver,密码是 MOto&@ 10
我正在使用SwiftHttp框架来处理请求.在点击登录请求时,我总是得到错误的响应.
但是,当在浏览器上点击登录请求URL(用服务器替换实际域)时,我得到了:
https:// server/api/check-access/by-login-pass?_key = wlyOF7TM8Y3tn19KUdlq&login = silver&pass = MOto%26 @ 10

编码密码有问题.虽然我用百分比编码取而代之.这是我的代码:

do {               
   let passwordString = self.convertSpecialCharacters(string: password.text!)
   print("%@", passwordString)
   let opt = try HTTP.GET(Constants.kLoginUrl, parameters: ["login": username.text!, "pass": passwordString])
   opt.start { response in
             if let err = response.error {
                 print("error: \(err.localizedDescription)")
                 return
             }

             print("opt finished: \(response.description)")
             self.parseLoginResponse(response.data)
}
} catch _ as NSError {

}  
Run Code Online (Sandbox Code Playgroud)

这是convertSpecialCharacters:

func convertSpecialCharacters(string: String) -> String {
        var newString …
Run Code Online (Sandbox Code Playgroud)

urlencode ios nsstringencoding swift

2
推荐指数
1
解决办法
2069
查看次数