2017-10-06 22 views
0

アクセントを訳すことは可能ですか iconvを使用していますか?例えばアクセント付き文字をCで反転する

iconv_t iconv = iconv_open("ASCII//TRANSLIT", "utf-8"); 

私はa, e, i, oに(スペイン語)á, é, í, óを翻字にしたいが、私はñを維持する必要があります。たぶんiconvにスキップされた文字を設定する方法はありますか?

私は単純な交換を使用できることを知っていますが、最初にもっと良い解決策があるかどうかを知りたいと思います。

+0

のiconvは、特定の文字をスキップするオプションはありません。すべてのアクセントを削除する目的は何ですか?また、あなたの入力エンコーディングは何ですか、あなたの出力エンコーディングは何ですか? – Gnqz

+0

@Gnqz入力と出力の両方のエンコーディングはUTF-8です。 ñはアクセント記号ではなく実際の文字です。 –

+0

UTF8には、ラテン語からシリア語へのシンボル、ギリシア語またはグレコのシンボルをどのように扱うべきか、かなりのシンボルが含まれていますか? – Gnqz

答えて

0

特定の文字をスキップするオプションがないため、iconvツールを使用するだけで、質問に記載された動作を達成することはできません。あなたができることはルックアップテーブルを作成することです(あなたの入力はUTF8 Latin1でしかないと考えます)。コードの

次作品は、トリックを行うことができます:

char* stripAccents(char* text) { 
    char *p = text; 
    unsigned char c = 0; 
    const char* trans = "AAAAAAECEEEEIIIIDÑOOOOOx0UUUUYPsaaaaaaeceeeeiiiiOñooooo/0uuuuypy"; 
    while (*(p) != '\0') 
    { 
     c = *(p); 
     if (c >= 192) { 
      *(p) = trans [ c - 192 ]; 
     } 
     ++p; 
    } 
    return text; 
    } 
関連する問題