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