0

最初から私のphpアプリケーションでは、将来の問題を回避するためにすべてをutf8で設定しました。データベースを設定しました:

class DATABASE_CONFIG {

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'aquitex',
    'prefix' => '',
    'encoding' => 'utf8',
);

public $test = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'aquitex',
    'prefix' => '',
    'encoding' => 'utf8',
);

}

ファイルcore.php:

Configure::write('App.encoding', 'UTF-8');

そして、ビューのデフォルトのレイアウト:

<?php echo $this->Html->charset(); ?>

ただし、フォームのラベルなどのいくつかの要素でまだ問題があります。

私のindex.ctpファイルでは、次の行があります。

echo $this->Html->link("Segurança", array('controller' => 'Posts','action'=> 'add'), array( 'class' => 'button')); 

完全に機能し、「ç」文字に問題はありません。

しかし、次のような形式で:

echo $this->Form->create('Post');
echo $this->Form->input('Nome Produto');
echo $this->Form->input(utf8_encode("Código Produto"));
echo $this->Form->input("Versão");
echo $this->Form->input('Data');
//echo $this->Form->input('body', array('rows' => '3'));
echo $this->Form->end('Criar Ficha');

フォームのラベルに「ó」または「ç」の文字が正しく表示されている単語を取得する方法はありません。ご覧のとおり、そのうちの1つでutf8encode()を試しました。

ヒントはありますか?ありがとうございました!

4

2 に答える 2

1

utf8_encode()ビューで使用する必要はありません。ビューファイルを正しく保存するのを忘れただけです。「bomなしのutf8」として保存すれば、問題ありません。

特別なutf8charを含まないファイルは、引き続きansiのままにすることができます(それらの間に違いがないため)。ただし、そのような文字を含むすべてのファイルには、utf8として保存する必要があります(エラーメッセージなどにutf8文字を使用する場合は、コントローラーやモデルも)。

PS:一般的に、英語を使用し、POファイルを介してあなたの言語に翻訳する方が賢明です。このようにして、ファイルをそのままにしておくことができ、より柔軟になります(新しいPOファイルを作成するだけで、その場で新しい言語を追加できます)。

編集 あなたのinputs()がutf8文字を使用していることを一緒に理解した後、私は更新する必要があります:

dbフィールド(したがって入力フィールド)には「underscore_field_names」を使用することをお勧めします。英語では次のようになります。

echo $this->Form->input("version"));

後でPOファイルを介して、またはラベルを指定することで、簡単に翻訳できます。

echo $this->Form->input("version", array('label' => 'Versão'));

しかし、最初の方法はそれを乾いた状態に保つことをお勧めします。

于 2012-11-23T10:26:49.037 に答える
0

App.encodingは、CakeにUTF8でデータを送信するように指示するだけです。MySQLを使用している場合は、データベース自体がutf8_general_ci照合に設定されていることを確認してください。

于 2012-11-25T07:47:36.027 に答える