Re: Small patch for handling non-breaking spaces.

Mark Rowe <[email protected]> Mon, 14 Mar 2005 18:05:08 +1300
Newsgroups gmane.network.fire.devel
Message-ID <[email protected]>
--Apple-Mail-1--674477211
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	delsp=yes;
	format=flowed


On Mar 14, 2005, at 5:45 PM, Robert Menteer wrote:

>>> The patch seems logical, but I don't understand the use of \xCA's
>>> throughout it.  My understanding is that Unicode's NO-BREAK SPACE is
>>> at codepoint U+00A0, which is \xc2\xa0 using UTF-8.  What am I
>>> missing?
>>
>> I think this would be better to do with something like this:
>>
>> [NSString stringWithFormat:@"%C",0x00A0] (assuming that Mark is right
>> about the Unicode code point). The problem is I'm not sure there's any
>> way to guarantee what encoding is used when you put a hex escape into
>> an NSString constant. The %C always means provide a unichar, which is
>> unambiguous.
>>
>> I'm guessing 0xCA is the MacRoman encoding of this character.
>>
>> -Jason
>
> Let's try this one more time this time using Unicode characters.
[snip]

> +			NSString *nbsp = [[[NSString alloc] initWithBytes:"\xA0" length:1
> +						encoding: 
> CFStringConvertEncodingToNSStringEncoding(NSUTF8StringEncoding)]
> +						autorelease];

This is both overly complex and incorrect for several reasons:
   * CFStringConvertEncodingToNSStringEncoding converts a  
CFStringEncoding to a NSStringEncoding, while NSUTF8StringEncoding is  
already a NSStringEncoding.
   * You've specified the encoding as being UTF-8, while \xa0 is not a  
valid UTF-8 string.  I think you probably intended it to be \xc2\xa0.

A simpler way of writing this would be something along the lines of:

   unichar _nbsp = 0x00A0;
   NSString *nbsp = [NSString stringWithCharacters:&_nbsp length:1];


I don't have time to test this right now though, hopefully someone else  
will.

Regards,

Mark Rowe
<http://bdash.net.nz/>
--Apple-Mail-1--674477211
Content-Transfer-Encoding: base64
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Disposition: attachment;
	filename=smime.p7s

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIMVDCCAuMw
ggJMoAMCAQICAwyCnTANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh
d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt
YWlsIElzc3VpbmcgQ0EwHhcNMDQwNjE2MDMyNzUyWhcNMDUwNjE2MDMyNzUyWjBNMR8wHQYDVQQD
ExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMSowKAYJKoZIhvcNAQkBFhtiZGFzaEB1c2Vycy5zb3Vy
Y2Vmb3JnZS5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8ORB0r8swfQJEN+VK
dy/9dUFvxgVtE6eVKV11WRjkj6F6m+s9mhFzgFYzpLV32SoRkQd8lSp1TNNzL++2VBIARofTn+5k
OfcLMyfuLAF1OIZCWPif2tOsoat8CxbygBMj5bE3gAz8yu0jc9097co/kwa1HcIgV/v1k7usdfJg
DudqLAb+jpBsBlLoUOehtljPzAQuIPyVjdAEouZPsd896E0LLhEDbDPamQq8AyyOhVAX0pczH4hU
wwT6YlHw6Kr0h3NfYdz+KmLFYLRwRsXzXyJgQ+dZTcdHUodVzKxjzWVAjDhTBbFEyTuG6xyfaW9J
oaQShXMabUQ/8bh2OgElAgMBAAGjODA2MCYGA1UdEQQfMB2BG2JkYXNoQHVzZXJzLnNvdXJjZWZv
cmdlLm5ldDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBAUAA4GBAIqC8aZ76sdq5qaTlJamqF5P
KXcm0++kUJjx4OtcXNp0/6uCUId8SfHP/edxYUCtkjG4z7hTJwkmwdZNrDByYesWrWWoODFTSmDW
dd1JRwiVy1HYXXu//LPMyXdZG7v2DgN8kFmMzQ/gsufoj+FDnFOJz/aaPyJkvlwxu4muQJCaMIIC
4zCCAkygAwIBAgIDDX7oMA0GCSqGSIb3DQEBBAUAMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxU
aGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJl
ZW1haWwgSXNzdWluZyBDQTAeFw0wNDExMjUxMTQwMTlaFw0wNTExMjUxMTQwMTlaME0xHzAdBgNV
BAMTFlRoYXd0ZSBGcmVlbWFpbCBNZW1iZXIxKjAoBgkqhkiG9w0BCQEWG2JkYXNoQHVzZXJzLnNv
dXJjZWZvcmdlLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANUI6I8g4HPQCSsZ
i7zQLJS+NfQn0qe8u1r6LamxTcdkqm8eeXEW0tEL8ORV3W6h4KaSiTO3rM06KVHTOJ4+hWiPEZ0Y
AIcIDfgjpylIx9O1Eyb/LOsKysGvDfjuNOyFRIry7hHpCHiRhwa/wtKIcd958zOnwSGuJ4EVcRVg
CsW98nDNdU5QThZwXwF9N9563e2sBCsWXrijKyKW0OhV5cDcrocAtFltzp9Em3wih9QmZlDtdrMx
V+JGgKKiuJuCtwYTniKr0OVEbEYkYCy+LukBAn2yVfUSowNXmWgX0TxpKsUQLa8ReVcXYFgVBXyO
7Tlek9o/CzgfRX17qJrVY/kCAwEAAaM4MDYwJgYDVR0RBB8wHYEbYmRhc2hAdXNlcnMuc291cmNl
Zm9yZ2UubmV0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEEBQADgYEAwjMXJjNaU+VkRS62q14D
OaLwhU2VLb7UozlM0VGzx5/T8w0QPmPsGuVn2uK2qJN1nPP+BvvQ0Dqdp2GI1285pwQaR8afujJN
IVpRg4OMWy7OMdbPIi81CViO6Xc105lS9X3OtEnJx5yjKpfOHkCDXj91owWvkt9tAS32dya/vVEw
ggM/MIICqKADAgECAgENMA0GCSqGSIb3DQEBBQUAMIHRMQswCQYDVQQGEwJaQTEVMBMGA1UECBMM
V2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0
aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMSQwIgYDVQQDExtU
aGF3dGUgUGVyc29uYWwgRnJlZW1haWwgQ0ExKzApBgkqhkiG9w0BCQEWHHBlcnNvbmFsLWZyZWVt
YWlsQHRoYXd0ZS5jb20wHhcNMDMwNzE3MDAwMDAwWhcNMTMwNzE2MjM1OTU5WjBiMQswCQYDVQQG
EwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhh
d3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
AoGBAMSmPFVzVftOucqZWh5owHUEcJ3f6f+jHuy9zfVb8hp2vX8MOmHyv1HOAdTlUAow1wJjWiyJ
FXCO3cnwK4Vaqj9xVsuvPAsH5/EfkTYkKhPPK9Xzgnc9A74r/rsYPge/QIACZNenprufZdHFKlSF
D0gEf6e20TxhBEAeZBlyYLf7AgMBAAGjgZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADBDBgNVHR8E
PDA6MDigNqA0hjJodHRwOi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlUGVyc29uYWxGcmVlbWFpbENB
LmNybDALBgNVHQ8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGVMYWJlbDIt
MTM4MA0GCSqGSIb3DQEBBQUAA4GBAEiM0VCD6gsuzA2jZqxnD3+vrL7CF6FDlpSdf0whuPg2H6ot
nzYvwPQcUCCTcDz9reFhYsPZOhl+hLGZGwDFGguCdJ4lUJRix9sncVcljd2pnDmOjCBPZV+V2vf3
h9bGCE6u9uo05RAaWzVNd+NWIXiC3CEZNd4ksdMdRv9dX2VPMIIDPzCCAqigAwIBAgIBDTANBgkq
hkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UE
BxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt
YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMB4XDTAz
MDcxNzAwMDAwMFoXDTEzMDcxNjIzNTk1OVowYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0
ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFp
bCBJc3N1aW5nIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1
BHCd3+n/ox7svc31W/Iadr1/DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbLrzwLB+fx
H5E2JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3+wID
AQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2Ny
bC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYDVR0PBAQDAgEGMCkG
A1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODANBgkqhkiG9w0BAQUFAAOB
gQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82L8D0HFAgk3A8/a3hYWLD2ToZ
foSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr394fWxghOrvbqNOUQGls1TXfjViF4
gtwhGTXeJLHTHUb/XV9lTzGCAucwggLjAgEBMGkwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRo
YXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVl
bWFpbCBJc3N1aW5nIENBAgMNfugwCQYFKw4DAhoFAKCCAVMwGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMDUwMzE0MDUwNTA5WjAjBgkqhkiG9w0BCQQxFgQUDYq6fiK9
Oh+mHUdHsYB7gez2n3kweAYJKwYBBAGCNxAEMWswaTBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMc
VGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZy
ZWVtYWlsIElzc3VpbmcgQ0ECAwyCnTB6BgsqhkiG9w0BCRACCzFroGkwYjELMAkGA1UEBhMCWkEx
JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQ
ZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAgMMgp0wDQYJKoZIhvcNAQEBBQAEggEAnp3u7Wj9
1qM3LY+5CxoAWPdTiVbA1/sAwmtjn+EvvojUrTZj2161/U6EOW3Qr4e2IetO4gMgbCtyEj9qrCLQ
aD77Wd8rA2jo29V3Kvt1ZnsMbUrI9BgKGQprv3E+Y39M5Ukwr/7GS3f6kdLaTgEG4+dIFoVxRvC7
UYBcRvl7NB27R7VZ4fIzGfRISDT11Q20CuavksmLtkLS/qfK5Cjo8AC6TEVfjq1jtZIee5aBpmPD
gHiM/xsBImMMAN0DEd7QTeJrwRAUOUnEwS5aHXR0Re/TCP9HPJbSgIV+mt27BuUw7jVnbsrmSfB0
/Sa+ivS4ucBEYuFNFFjBaq6WSnDUVQAAAAAAAA==

--Apple-Mail-1--674477211--



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click