2011-08-27 8 views
4

私はいくつかの単純なhtml:Mail.appに、リスト、太字、いくつかのイタリック体を供給しようとしています。しかし、私は£のような文字を使用すると、Mail.appは何も表示しないことに気付きました。 £(完全なリストはこちら:http://www.w3schools.com/tags/ref_entities.asp)のようなHTMLエンティティに変換する必要があることが分かりました。私は、ユーザーが出ているほとんどの文字のために働く部分的な解決策を持っているが、それは固体の修正には程遠いです:Cocoaを使用して、£などの特殊文字をHTML同等のものに確実に変換するにはどうすればよいですか?

- (NSString*) makeValidHTML:(NSString*)str { 
    str = [str stringByReplacingOccurrencesOfString:@"£" withString:@"£"]; 
    str = [str stringByReplacingOccurrencesOfString:@"¢" withString:@"¢"]; 
    str = [str stringByReplacingOccurrencesOfString:@"¥" withString:@"¥"]; 
    str = [str stringByReplacingOccurrencesOfString:@"©" withString:@"©"]; 
    str = [str stringByReplacingOccurrencesOfString:@"®" withString:@"®"]; 
    str = [str stringByReplacingOccurrencesOfString:@"°" withString:@"°"]; 
    str = [str stringByReplacingOccurrencesOfString:@"¿" withString:@"¿"]; 
    str = [str stringByReplacingOccurrencesOfString:@"¡" withString:@"¡"]; 
    str = [str stringByReplacingOccurrencesOfString:@"‘" withString:@"'"]; 
    str = [str stringByReplacingOccurrencesOfString:@"'" withString:@"'"]; 
    str = [str stringByReplacingOccurrencesOfString:@"&" withString:@"&"]; 
    str = [str stringByReplacingOccurrencesOfString:@"\"" withString:@"""]; 
    str = [str stringByReplacingOccurrencesOfString:@"“" withString:@"""]; 
    str = [str stringByReplacingOccurrencesOfString:@"<" withString:@"&lt;"]; 
    str = [str stringByReplacingOccurrencesOfString:@">" withString:@"&gt;"]; 
    return str; 
} 

可能なすべての予約文字を一覧表示することなく、これを行うための標準的な方法はありますか?

答えて

0

を私はあなたの主な問題は、あなたのHTMLをコードすると宣言していないということだと思いますページをUTF-8として表示します。あなたが言及しているエンティティのいくつかは本物の問題であり、>&gt;(@Joel Martinezのコードがそこに役立つようにリンクされています)のように変換する必要がありますが、£シンボルのようなものは、ページがUTF-8などのUnicode形式であることを宣言し、符号化されている:

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

+0

これを試しても何の違いもありませんでしたが、提案に感謝します。 –

+0

HTTPヘッダーがメタヘッダーより優先されるため、サーバーがContent-Type HTTPヘッダーで文字セットを送信しているときは、実際には機能しません。 – duncanwilcox

関連する問題