2012-02-20 14 views
0

私はJavascriptとDBを使ってPythonプログラムで作業しています。私は書かれたアクセント記号(á、é、í、ó、ú)を管理するのにいくつかの問題を抱えてきました。最初に私のプログラムはテキスト入力を表示し、ユーザは情報を書きます。ユーザーが "ACCEPT"ボタンをクリックすると、javascriptはその情報を受け取り、その情報をデータベースに保存する別のpythonプログラムに送信します。次回ユーザーが入ると、テキスト入力の代わりにデータベースに保存された情報が表示されます。アクセントを文字列で表現する

私の問題は、情報にアクセント記号がある場合です。最初は私がjavascriptの問題だったので、私はreplace関数の作業を開始します。次に、情報がアクセント記号付きのデータベースに保存されていることがわかりました。問題はJavaScript関数またはデータベースではありません。

情報はデータベースから取得され、アクセント記号が非常によく表示されます。その後、javascriptがその値をとり、その値で警告を表示すると、アクセント記号が非常によく表示されます。そのJavaScriptは、AJAXを持つURL上のその値を別のPythonプログラムに送信します。このPythonはその値を受け取りますが、それを印刷すると変更されます。アクセント記号はもう表示されませんが、少し広がります。私は(私はこれを何度も使用されている)、このコードで値を受け取る:

form = cgi.FieldStorage() 
area = form.getfirst("area") 

ので、私はPythonがapropiateアクセントマークにその文字を変更する機能を置き換えるもう一度味わい始めました。私は次のようなものを試していた:area.replace("\u00e9","é") for(é)。しかし、それは動作しません。

私のプログラムでもこれを持っています:# -*- coding: iso-8859-1 -*-これは特殊文字のために働きます。

私はそれらを置き換えることができるように、pythonがアクセントを表す方法を見つける必要があります。

+2

utf-8以外の 'coding'宣言を使用することをお勧めします。 – Daenyth

+4

[すべてのソフトウェア開発者の絶対的な最小値、絶対にUnicodeと文字セットについて知っておく必要があります(言い訳はありません)] – georg

+0

@Daenythどちらですか? – mauguerra

答えて

3

ここにバックアップする必要があります。

コードをutf-8(# -*- coding: utf-8 -*-)に設定し、ユニコードで動作するエディタを使用します。

通常、u'hélas'のようなユニコード文字列を使用して定数を宣言します。

魔法の場合と同様に、アクセント記号が有効です(データベースがユニコードを正しく処理しているかどうか確認してください)。

+0

しかし、私はすでにutf-8(# - * - コーディング:utf-8 - * - )のコードを持っています。そこに何か変える必要がありますか? – mauguerra

+1

@mauguerra:あなたの質問では、コーディングがiso-8859-1に設定されていると言います。 utf-8は行く方法ですが、エディタがutf-8モードで動作していることを確認してください。 – Marcin

+0

私はutf-8モードで動作するエディタを使用しています。他に何ができるのか知っていますか?ありがとうございました – mauguerra

1

データベース内のデータは問題ありませんが、Pythonプログラムにスクランブルされているように見える場合は、データベース接続の設定に問題がある可能性があります。私はあなたの作業環境を整理する前にそれを調べるでしょう。 (しかし、Unicodeのリファレンスも読んでください)。