Umlaut와 관련된 웹 사이트에 git의 로그 항목을 표시하는 동안 문제가 있습니다. 솔루션을 찾을 곳이 어디인지 알지 못해 여기에서 도움을 요청합니다. 나는 이것이 인코딩 문제 일지 모르지만, use utf8
은 내 시도에서 어떤 영향도 미치지 않았다. 도움이되는 답변을 찾기 위해 문제를 설명하기 위해 노력했습니다. 고마워.Mojolicious 또는 HTML :: Entities와 함께 사용중인 Umlaut에 관한 Git :: Repository 관련 문제
그래서 내가 커밋 메시지에 움라우트와의 repo 생성 :
echo "Hello Wörld!" > a_file.txt
git init
git add a_file.txt
git commit -m "Some Ümlaut: üöä"
내가 지금 cmd를에서 볼 수 있습니다을, 아무런 문제가 발생하지 :
$ git log
...
Some Ümlaut: üöä
나는 또한이 물건을 인쇄 할 수 있습니다 문제가없는 Perl. 내가 전화 할게 : 나에게 위의 쉘 예와 같은 출력을 제공
use Git::Repository;
my $repo = Git::Repository->new(work_tree => ".");
my $log = $repo->run("log");
print "$log\n";
합니다.
Mojolicious
을 사용할 때 문제가 발생합니다. 다음은 예입니다 : 내가 이것을 실행하면
use Mojolicious::Lite;
get '/' => sub {
my $self = shift;
use Git::Repository;
my $repo = Git::Repository->new(work_tree => ".");
my $log = $repo->run("log");
$self->render(text => "$log -- möre Ümläut\n");
};
app->start;
, 문자열의 움라우트가 작동하지만 커밋 메시지에서 오는되지 않은. 그것을 보여주기 위해 나는 다음과 같은 펄 위를 실행할 수 있습니다
perl mojo.pl daemon
그때 컬과 웹 사이트를 호출
$ curl http://127.0.0.1:3000
...
Some Ãmlaut: üöä -- möre Ümläut
내가 말했듯이 : 망할 놈의 모음 변이에 실패, 나머지는 괜찮습니다.
use strict;
use warnings;
use Git::Repository;
use HTML::Entities 'encode_entities';
my $repo = Git::Repository->new(work_tree => ".");
my $log = $repo->run("log");
print "$log\n";
my $htmlified = encode_entities($log);
print "$htmlified\n";
그러나이 호출, 첫 번째 출력이 좋은 :
그래서 내가 영리 및 HTML 엔티티로 변환 생각했다....
Some Ümlaut: üöä
...
Some Ümlaut: üöä
이 문제가 Git::Repository
에 있는지, 그것은, 아니면 어디 실패 않습니다 HTML::Entities
는 Mojolicious
과 같은 문제가? 필자는이 테스트를 위해 Ubuntu 12.04에서 Perl 5.16을 사용했습니다. 도움 주셔서 감사합니다.
이것은 HTML :: Entities를 사용하는 예제에서도 작동합니다.stdout으로 인쇄하는 것이 더 이상 효과가 없지만 ('Some mlaut : '), HTML 엔티티는 잘 작동합니다 :'Some Ü mlaut : ü ö ä' –
왜냐하면 Mojolicious는 표현; 따라서 외부 소스에서 온 입력을 디코딩하는 것이 중요합니다. 유니 코드의 주요 임차인은 프로그램의 경계에서 디코딩하고 인코딩하는 것입니다. –
Afaik now : 문제는 Git :: Repository가 Perl-Chars가 아니라 "있는 그대로"의 바이트를 반환한다는 것입니다. –