我想在iOS 5中将表情符号转换为unicode角色.
例如,转换
到\ue415.
我去NSStringEncoding在NSString类参考.
在iOS 4的,NSUTF16BigEndianStringEncoding并NSUTF32BigEndianStringEncoding给了我<e415>和<0000e415>分别,这是相当接近我想要的东西.
在iOS 5中,结果不同.它咆哮<d83dde04>而且<0001f604>.
我怎样才能得到\ue415的
在iOS 5?谢谢.
我正在尝试使用Xcode 5中引入的新XCTest框架创建单元测试.我在我的一个测试用例中有一行看起来像这样:
XCTAssertEqual([self.client stringEncoding], NSUTF8StringEncoding, …);
当我尝试运行我的测试时,Xcode吐出了这个错误:"对NSUTF8StringEncoding的引用是模棱两可的." 我可以通过将以上行更改为此来使测试工作:
XCTAssertEqual([self.client stringEncoding], (NSStringEncoding) 4, …);
(这是因为4是值的NSUTF8StringEncoding.)当我分配NSUTF8StringEncoding给局部变量并在XCTAssertEqual()调用中使用它时,也会发生这种情况.为什么我收到此错误?
我试图将一些简单的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在序列化时转义字符串值中的正斜杠.
我有一个包含二进制数据的字符串(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)
任何更正或建议将不胜感激.
谢谢!
我已经实现了与文本字段关联的自定义键盘,因此当用户按下删除按钮时,我从字符串中删除最后一个字符,并手动更新当前文本字段文本.
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键盘,它会适当地处理两种情况.必须有一些方法可以做到这一点,有一些我缺少的东西,但我无法弄清楚是什么.
所以这是一个问题.
我有一个字符串
????? ????-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)
删除此信解决问题.
但它让我疯狂,为什么会发生这样的事情?
这里的解决方法有效,但不满足我:
以及dosnt工作的解决方法:
在Core Data中保存后,请帮助我了解字符串发生了什么.
还有更优雅的解决方案吗?
我一直在使用 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 更新后突然返回?
这里我编码我的字符串,但它给出了上述错误.我做的是:
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)
它给我第二行代码错误.如果有人可以帮忙!
我有一个NSPopUpButton,我想用它来选择打开文件的文本编码.
我已经有了一些如何实现这一点的想法,但是当我开始学习Objective-C和Cocoa时,我几乎可以肯定有更好的方法可以实现我想要的.
我需要一个NSString,其中包含编码名称和相关的NSStringEncoding值.
我曾想过创建一个表示编码(名称和值)的类,并且有一个NSArray,其中包含这种类型的对象,然后使用数组的内容填充NSPopUpButton,但我认为应该有更好的方法.
我对NSDictionary类不是很熟悉,但我怀疑应该让事情变得更容易.
有人可以给我一个暗示吗?
cocoa objective-c nsdictionary nspopupbutton nsstringencoding
我从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) 我只是想知道是否有任何现有的类别或任何类型的函数将从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) 我正在使用故事板和核心数据开发一个iPad应用程序.对于我的应用程序,我需要生成一个随机字符串,如'M000142140502343524',当单击一个按钮时,'tableA'的'data'字段中尚不存在.
我有一个简单的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)