2017-12-06 2 views
2

같은 사용하는 이외의 모든 영숫자/문장 부호를 제거 DY '• (이모티콘)구문 분석 양식 데이터는 우리가 이상한 문자를보고있는 웹 양식 항목에서

또는

à ¢  € ¬ (아무 생각하지만 윈도우 1252 생각)

,

그 중 일부는 정규식을 사용하여 간단히 utf-8로 대체 할 수 있지만 효율적으로 제거하는 일종의 정규식 또는 인코딩을 선호합니다.

나는 UTF-8

펄이를위한 최고의 가장 이상적인 해결책은 무엇인가에 MYSQL의 DB 테이블을 설정 한? 또는 mysql 테이블에서 대신 할 수 있습니까?

+1

인코딩이 손상되는 것처럼 보입니다. 클라이언트는 utf8을 보내고 utf8은 안전하지만 CP1252와 같은 방식으로 처리됩니다. 이 문제를 해결 하시겠습니까, 아니면이 데이터를 삭제 하시겠습니까? (힌트 : 사용자의 데이터를 버리는 것은 거의 좋은 아이디어가 아닙니다.) – simbabque

+0

이상적으로는 데이터를 유지하고 올바르게 인코딩하여 나중에 표시 할 수 있습니다. –

답변

-1

모든 특수 문자가 제거되어야합니다. ORD 테이블에서 필요한 항목이 모두 제거되었는지 확인할 수 있습니다.

$line =~ s/(.)/(ord($1) > 127) ? "" : $1/egs; 
+0

downvote. 이 얼마나 surpirse. – Andrey

+0

내가 더러운 최후의 수단으로 그들을 제거하고 싶다면 –

+0

"하지만 그들을 제거하는 어떤 종류의 정규 표현식이나 인코딩을 선호한다"- 당신이 그들을 제거하기를 원하지 않는다면 당신의 요청을 바꿔 줄 수있다 – Andrey

2

’ 2019 RIGHT 따옴표 MARK ()는 UTF-8, 다음 CP1252 단말에 표시하여 인코딩 U +이다.

💕은 U + 1F495이다. 마찬가지로 2 HEART ()도 마찬가지로 취급한다.

‬은 UTF-8을 사용하여 인코딩 한 다음 UTF-8을 사용하여 다시 인코딩 한 다음 cp1252 터미널에 표시합니다.


펄이를위한 최고의 가장 이상적인 해결책은 무엇인가? 또는 mysql 테이블에서 대신 할 수 있습니까?

에 따라 다릅니다.

Perl 프로그램에 버그가있는 경우 수정해야합니다!

데이터가 데이터베이스에 좋지 않으면 그 데이터를 데이터베이스에 저장해야합니다.

그대로 서면 증거가 없습니다. 필드의 인코딩을 제공하고 SELECT HEX(field)을 제공하면 데이터가 데이터베이스에 있는지 여부가 밝혀집니다.

+0

필자는 데이터베이스에 추가되기 전에 데이터를 유지하고 올바르게 페릴로 인코딩하려고 동의했다. –

+0

그런 다음 요청한 정보를 제공하십시오. 필요한 정보를 추가하여 질문을 수정하면 알려 주시면 답변을 업데이트하겠습니다. – ikegami