Commit | Line | Data |
55046410 |
1 | package TestAppUnicode::Controller::Root; |
2 | use strict; |
3 | use warnings; |
4 | use utf8; |
5 | |
6 | __PACKAGE__->config(namespace => q{}); |
7 | |
8 | use base 'Catalyst::Controller'; |
9 | |
88e5a8b0 |
10 | sub main :Path('') { |
55046410 |
11 | my ($self, $ctx, $charset) = @_; |
12 | my $content_type = 'text/html'; |
13 | if ($ctx->stash->{charset}) { |
14 | $content_type .= ";charset=" . $ctx->stash->{charset}; |
15 | } |
16 | $ctx->res->body('<h1>It works</h1>'); |
17 | $ctx->res->content_type($content_type); |
18 | } |
19 | |
20 | sub unicode_no_enc :Local { |
21 | my ($self, $c) = @_; |
22 | my $data = "ほげ"; # hoge! |
23 | utf8::encode($data); |
24 | $c->response->body($data); |
25 | $c->res->content_type('text/plain'); |
26 | $c->encoding(undef); |
27 | } |
28 | |
29 | sub unicode :Local { |
30 | my ($self, $c) = @_; |
31 | my $data = "ほげ"; # hoge! |
32 | $c->response->body($data); # should be decoded |
33 | $c->res->content_type('text/plain'); |
34 | } |
35 | |
36 | sub not_unicode :Local { |
37 | my ($self, $c) = @_; |
38 | my $data = "\x{1234}\x{5678}"; |
39 | utf8::encode($data); # DO NOT WANT unicode |
40 | $c->response->body($data); # just some octets |
41 | $c->res->content_type('text/plain'); |
42 | $c->encoding(undef); |
43 | } |
44 | |
45 | sub latin1 :Local { |
46 | my ($self, $c) = @_; |
47 | |
48 | $c->res->content_type('text/plain'); |
49 | $c->response->body('LATIN SMALL LETTER E WITH ACUTE: é'); |
50 | } |
51 | |
52 | sub file :Local { |
53 | my ($self, $c) = @_; |
54 | close *STDERR; # i am evil. |
1d285816 |
55 | open my $test_file, '<', \"this is a test"; |
56 | $c->response->body($test_file); |
55046410 |
57 | } |
58 | |
59 | sub capture : Chained('/') CaptureArgs(1) {} |
60 | |
61 | sub decode_capture : Chained('capture') PathPart('') Args(0) { |
62 | my ( $self, $c, $cap_arg ) = @_; |
63 | $c->forward('main'); |
64 | } |
65 | |
66 | sub capture_charset : Chained('/') Args(1) { |
67 | my ( $self, $c, $cap_arg ) = @_; |
68 | $c->stash(charset => $cap_arg); |
69 | $c->forward('main'); |
70 | } |
71 | |
72 | sub shift_jis :Local { |
73 | my ($self, $c) = @_; |
74 | my $data = "ほげ"; # hoge! |
75 | $c->response->body($data); # should be decoded |
76 | $c->res->content_type('text/plain; charset=Shift_JIS'); |
77 | $c->encoding("Shift_JIS"); |
78 | } |
79 | |
80 | 1; |
81 | |