Konvertieren von UTF-8-Kodierung ISO 8859-1-Kodierung mit NSString
Ich habe eine Anwendung, liest die Daten im UTF-8 format aus dem server, aber es muss angezeigt werden in ISO 8859-1(Latin-1). Gibt es irgendwelche Cocoa-APIs, um dies zu erreichen?
- "anzeigen in ISO 8859-1" macht keinen Sinn. Wenn Sie die Anzeige von text, Figuren gezogen werden. Und die Charaktere sind, unabhängig von einer Codierung. Die Codierung wird verwendet, wenn der text gespeichert oder übertragen werden, aber nicht auf dem display.
- Welchen Teil meiner Antwort nicht ausreichend Antwort auf Ihre Frage?
- Ich Stimme mit Codo, das macht keinen Sinn. Unter ISO-8859-1 codierte Zeichen und einfach serialisieren Sie als UTF-8 ist nur ok, weil ISO-8895-1 aufgenommen wurde, als die ersten 256 codepoints, aber würde scheitern mit irgendeiner anderen Kodierung und konnte fehlschlagen, wenn Sie nicht wirklich mit ISO-8859-1 (z.B. mit 8859-15 oder Windows-1252). Sollte der server das senden der richtigen UTF-8-codierte Unicode-codepoints, und Sie sollten einfach sein, die Anzeige der zugeordneten Glyphen.
- Während die Frage, das Motiv kann nicht Sinn machen, es gibt immer noch eine Antwort.
- Die Frage ist eine systemische von einem anderen problem, und es muss darauf hingewiesen werden, dass diese Lösung nur zuverlässig arbeiten, mit 8859-1. Jede andere Codierung serialisiert diese Weise, oder sogar eine Variante des 8859-1 scheitern kann.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
NSString
'sgetCString:maxLength:Codierung:
Methode, wie diese:Sobald Sie diese haben, dann können Sie re-initialisieren einer
NSString
Instanz aus, die gleiche Codierung verwenden diestringWithCString:encoding:
Klasse Methode:Ich lieber mit
dataUsingEncoding:allowLossyConversion:
weil es nicht erfordern Sie, zu schätzen, wie viel Speicher zu reservieren, und der zurückgegebene NSData sagt Ihnen, wie viele bytes benötigt wurden.Jacobs Antwort nicht wirklich für meine. Was hat schließlich zu arbeiten war für mich nur
verwenden
Beispiel:
Das sollte es tun.
yourCstringHere
- und Ausgänge ein NSSring mit Latin-Kodierung, nicht aus Latein-Puffer als das, was du hast zitiert: "...machen NSString von latin1-Puffer :)" Danke:-)