저는 PHP/MySQL 문자 집합과 관련하여 모범 사례에 대한 일반적인 질문이있는 Cake PHP에 대해 알게되었습니다. 여기에서 대답 할 수 있기를 바랍니다.라틴어 문자가 아닌 경우
My (practice) 시스템에는 영화의 mysql 테이블이 포함되어 있습니다. 이 목록은 Excel 시트에서 가져와 CSV로 내보내고 phpMyAdmin을 통해 가져 왔습니다.
"이국적인"글리프가있는 제목이 브라우저에서 렌더링하는 데 문제가 있음을 발견했습니다 (예 : The Amélie). Cake 또는 plain PHP를 사용하면 htmlentities
을 통해 é
으로 변환되지 않는 한 ?
으로 렌더링됩니다. 특수 문자와의 링크는 전혀 렌더링되지 않습니다.
내 케이크 입력 양식을 사용하여 <alt>0233
을 입력하는 경우, 이는 소스에서 올바르게 렌더링되지만 을 통해 htmlentities
을 통해 올바르게 렌더링됩니다. 빠른 후
- 가
<meta>
물건이었다 확인했다 UTF-8 - 에 PHP 소스 및 CSV 파일의 인코딩을 변경, 나는 아마 UTF-8이 물건을 해결하는 것입니다 결정 검색 이미 (그것은 Cake의 기본 레이아웃을 통해 이미 존재했습니다). 확인했다
- 내 브라우저에서 문서가 생각 UTF-8 (그들이)
- 이 UTF-8로 general_ci를 MySQL의 DB에 데이터 정렬을 변경 (avalable에서 교육 자상으로 UTF-8 옵션)
- 삭제 및 내 데이터를 다시 가져 왔습니다.
그러나 아직 붙어 있습니다. 필자는 phpMyAdmin이 레코드를 검색 할 때 HTML 소스에서 문자를 "올바르게"렌더링하는 것을 관리합니다.
나는 감지 해당 문서 인코딩의 비난 누군가에 대한 최고의 답변을 제공 할 수있는 경우, 궁금 :- 글리프를 보존하기 위해 MySQL로 엑셀에서 내 데이터를 이동하는 가장 좋은 방법은 무엇입니까?
- 이 기능을 지원하기 위해 내 테이블에 가장 적합한 설정은 무엇입니까?
- 기본적으로 é의 좋아하는 것을 표시하기 위해 UTF-8을 사용하는 것을 선호합니다. htmlentities와 같은 호출에 대한로드를 피하기 위해 Cake에서 할 수있는 일은 구성 설정이나 방법입니다. 더 친숙하게 만들고
Html->link
같은 케이크 네이티브 도우미가 작동하도록할까요? 다만 경우에
일부 코드 :
영화 컨트롤러 발췌 ..
function index() {
$this->set('movies' , $this->Movie->find('all'));
}
index.ctp보기 발췌 어떤 도움/조언에 미리
<?php foreach ($movies as $movie): ?>
<tr>
<td><?php echo $movie['Movie']['id']; ?></td>
<td><?php echo htmlentities($movie['Movie']['title']); ?>
<td><?php echo $this->Html->link($movie['Movie']['title'] ,
array('controller' => 'movies' , 'action' => 'view' , $movie['Movie']['id'])); ?>
</td>
<td><?php echo $this->Html->link("Edit",
array('action' => 'edit' , $movie['Movie']['id'])); ?>
</td>
<td>
<?php echo $this->Html->link('Delete', array('action' => 'delete', $movie['Movie']['id']), null, 'Are you sure?')?>
</td>
</tr>
<?php endforeach; ?>
감사합니다.
감사합니다. MySQL 문자 집합과 테이블은 UTF-8로 설정됩니다. PHP MyAdmin을 통해서만 DB에 액세스 할 수 있습니다. 파일 가져 오기 설정은 UTF-8입니다. 가져 오기 파일은 SQL이 아닌 하나의 열 목록입니다. 문자는 phpMyAdmin 클라이언트에서 올바른 글리프로 표시됩니다 (예 : browse recs 및 html 소스보기). 계정 제약 조건을 고려해 볼 수있는 다른 방법은 없습니까? – trickwallett