質問編集履歴
3
コードの変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,18 +21,23 @@
|
|
21
21
|
|
22
22
|
試したコードは下記の通りです。
|
23
23
|
```ここに言語を入力
|
24
|
-
sub
|
24
|
+
sub z_substr {
|
25
|
-
|
25
|
+
|
26
|
-
my $length = length $str;
|
27
26
|
local($s,$p,$l) = @_;
|
28
|
-
$s =~ s/(.)/$1\0/g;
|
27
|
+
$s =~ s/(.)/$1\0/g;
|
29
|
-
$s =~ s/([\x81-\x9f\xe0-\xfc])\0(.)\0/$1$2\0\0/g;
|
28
|
+
$s =~ s/([\x81-\x9f\xe0-\xfc])\0(.)\0/$1$2\0\0 /g;
|
30
29
|
$s = $l eq '' ? substr($s,$p*2):substr($s,$p*2,$l*2);
|
31
30
|
$s =~ tr/\0//d;
|
32
31
|
$s;
|
32
|
+
}
|
33
|
+
|
34
|
+
sub bunkatsu {
|
35
|
+
my $str = $name;
|
36
|
+
my $length = length $str;
|
37
|
+
|
33
38
|
if ($length =10) {
|
34
|
-
$leftname =
|
39
|
+
$leftname = &z_substr($str, 0, 5);
|
35
|
-
$rightname =
|
40
|
+
$rightname = &z_substr($str, length($str) - 5, 5);
|
36
41
|
}
|
37
42
|
}
|
38
43
|
```
|
2
質問の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,12 +7,14 @@
|
|
7
7
|
$rightname =ア
|
8
8
|
と文字化けしてしまいます。
|
9
9
|
|
10
|
+
local($s,$p,$l) = @_;
|
11
|
+
$s =~ s/(.)/$1\0/g;
|
10
|
-
|
12
|
+
$s =~ s/([\x81-\x9f\xe0-\xfc])\0(.)\0/$1$2\0\0/g;
|
11
|
-
|
13
|
+
$s = $l eq '' ? substr($s,$p*2):substr($s,$p*2,$l*2);
|
14
|
+
$s =~ tr/\0//d;
|
15
|
+
$s;
|
12
|
-
を入れる
|
16
|
+
こちらを入れると文字化けが対応できるとのことですが、
|
13
|
-
$leftname =あ・
|
14
|
-
$rightname =ィか
|
15
|
-
|
17
|
+
文字化けの解消がされませんでした。
|
16
18
|
|
17
19
|
こちらの対処方法をご教示いただければと存じます。
|
18
20
|
宜しくお願いいたします。
|
1
コードの変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,12 +21,16 @@
|
|
21
21
|
```ここに言語を入力
|
22
22
|
sub bunkatsu {
|
23
23
|
my $str = $name;
|
24
|
-
my $decoded_str = Encode::decode('Shift_JIS', $str);
|
25
24
|
my $length = length $str;
|
25
|
+
local($s,$p,$l) = @_;
|
26
|
+
$s =~ s/(.)/$1\0/g;
|
26
|
-
|
27
|
+
$s =~ s/([\x81-\x9f\xe0-\xfc])\0(.)\0/$1$2\0\0/g;
|
28
|
+
$s = $l eq '' ? substr($s,$p*2):substr($s,$p*2,$l*2);
|
29
|
+
$s =~ tr/\0//d;
|
30
|
+
$s;
|
27
31
|
if ($length =10) {
|
28
|
-
$leftname = substr($
|
32
|
+
$leftname = substr($s, 0, 5);
|
29
|
-
$rightname = substr($
|
33
|
+
$rightname = substr($s, length($s) - 5, 5);
|
30
34
|
}
|
31
35
|
}
|
32
36
|
```
|