UITextField 将不间断空格转换为空格?

Posted

技术标签:

【中文标题】UITextField 将不间断空格转换为空格?【英文标题】:UITextField converts non-breaking spaces to spaces? 【发布时间】:2008-11-29 06:55:56 【问题描述】:

似乎 UITextFields 将所有 non-breaking spaces (nbsp, U+00A0) 转换为 spaces (U+0020)。这会导致编辑区域设置特定数字的问题。例如,在法语/法国语言环境中,不间断空格将 1 和 % 分隔成“1%”。但是,由于 UITextField 将分隔符转换为空格,因此区域设置感知的 NSNumberFormatter 无法解析区域设置字符串并将其转换为数字。

下面的代码 sn -p 说明了这个问题。

NSLocale *fr_FR = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];

NSNumberFormatter *percentageFormatter = [[NSNumberFormatter alloc] init];
[percentageFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[percentageFormatter setGeneratesDecimalNumbers:TRUE];
[percentageFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[percentageFormatter setLocale:fr_FR];

NSDecimalNumber *one = [NSDecimalNumber decimalNumberWithString:@"0.01"];

// will be "1 %" where the separator character is a nbsp (this is correct)
NSString *percentage = [percentageFormatter stringFromNumber:one];

UITextField *textField = [[UITextField alloc] init];
textField.text = percentage;

// will be "1 %" where the separator character is a space (this is wrong)
NSString *textFieldValue = textField2.text;

// returns an indeterminate value: may throw an exception, may return nil, etc
// this should return the number 0.01
NSNumber *percentageNumber = [percentageFormatter numberFromString:textFieldValue];

我的问题:如何防止

我了解我可以采用哪些变通方法来破解它,以便在我处于使用不间断空格的语言环境中时它可以工作。但是,如果有我不知道的 UITextField 的属性/行为来保存 nbsp,我想知道。

【问题讨论】:

【参考方案1】:

我很确定这个功能不存在。打开 iPhone 的错误报告怎么样?

【讨论】:

这也是我的怀疑......我想我会先在这里询问,然后再将错误记录到 Apple。 Bug 6413923 已记录到 Apple。

以上是关于UITextField 将不间断空格转换为空格?的主要内容,如果未能解决你的问题,请参考以下文章

Apache POI 异常空白(已解决:\u00A0 不间断空格)

VSCode插入“不间断空格”而不是常规空格

[教程]-三种空格unicode(u00A0,u0020,u3000)表示的区别

MySQL全文搜索、整理和不间断空格

制表符空格而不是多个不间断空格(“nbsp”)?

术语:制表符是不间断空格吗?