0

この質問はほとんどの言語で回答されていることは知っていますが、C の解決策が見つからないか、何か誤解しています。

「char *strSSID」を宣言しました。フォームページの POST パラメータを処理する Web サーバーの機能があります。この関数は、「srtSSID」で、ワイヤレスの SSID 名を構成するために使用される SSID という名前のパラメーターを返します。しかし問題は、「ñ」のような SSID の特殊文字が Linux では正しく表示され、私の電話や Windows では奇妙な文字のように表示されることです。

問題はエンコーディングであることはわかっています。私のプラットフォーム (mips と uclibc ライブラリ) では、「ñ」のような特殊文字が 2 つの位置に保存されます (たとえば、「srtSSID[0]」と「strSSID[1]」を意味し、SSID の最初の「ñ」文字を保存します) ) strSSID の。

助けが必要です。

ありがとう

4

3 に答える 3

1

すべてのデバイスで文字が正しく表示されるようにする唯一の方法は、ASCII で表示される文字を使用することです。これは、Windows などにそれらを UTF-8 として解釈させることができないためです。問題は、「ñ」などの文字が ASCII に表示されないため、そのような文字を含む Unicode 文字列を標準 ASCII に変換できないことです。

最初の 128 文字の UTF-8 文字は ASCII と同じであるため、文字列を変換する必要はありません...ただし、127 を超える値を持つ文字はすべて削除または置換する必要があります。

使用する可能性が高いすべてのデバイスが英語以外の同じデフォルト言語を使用している場合、すべてが同じ拡張 ASCII バージョンを使用している可能性があります (厳密には、ASCII は 7 ビット コードですが、ほとんどの実装では最上位ビットを使用します)。別の 128 文字を追加するには、通常はアクセント付きの文字が含まれ、多くの場合、デバイスのデフォルト言語に依存します)。私はここで憶測に迷い込んでいます!もちろん、あなたの拡張 ASCII 文字セットは、SSID が UTF-8 であると仮定するデバイスと互換性があるとは思えません!

于 2013-05-23T16:55:21.797 に答える