2012-09-01 2 views
1

다른 인코딩이 Perl 프로그램의 데이터베이스에서 양식 입력과 데이터로 혼합되어 "gremlins"문제가 발생했습니다. 처음에는 해독하지 않았으며 똑똑한 따옴표와 비슷한 것들이 여러 횡설수설 문자를 생성합니다. 그러나 UTF-8로 모든 것을 맹목적으로 해독하면 오래된 Windows-1252 콘텐츠가 물음표로 채워지게됩니다.Perl의 Encode :: Detect :: Detector가 얼마나 비쌉니까?

그래서 Encode :: Detect :: Detector와 decode() 함수를 사용하여 SQL 데이터베이스의 데이터와 함께 모든 POST 및 GET 입력을 감지하고 디코딩합니다 (디코딩 프로세스는 아마도 10-20에서 발생합니다). 페이지가 생성 될 때마다 텍스트 문자열).

my $encoding_name = Encode::Detect::Detector::detect($value); 
    eval { $value = decode($encoding_name, $value) }; 

내 질문은 이것이다 :이 (I는 HTML 헤더에 지정 한대로) UTF-8 출력으로 제대로 모든 디스플레이를 너무 UTF-8, ASCII 및 Windows-1252 컨텐츠를 물건을 정리하는 것 같다 방법 리소스 무거운이 과정입니까? 나는 감속을 느껴 보지 못했고, 이것이 어떻게 작동하는지에 만족한다고 생각합니다. 그러나 이것을하는 더 효율적인 방법이 있다면, 나는 그것을 듣게되어 기쁩니다.

답변

3

답변은 응용 프로그램에 따라 크게 달라 지므로 '비용'의 수용 가능성은 귀하의 전화입니다.

오버 헤드를 계량하는 가장 좋은 방법은 코드를 프로파일 링하는 것입니다. Devel::NYTProf을 돌려 줄 수도 있습니다.

Tim Bunce's YAPC::EU presentation 모듈에 대한 자세한 정보를 제공합니다.

관련 문제