teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正

2019/08/12 07:21

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  シフト JIS で「表」という文字は 95 5C という二バイトになります。ところが、5C 一つだけだと、バックスラッシュを表します。そこで、文字列を頭から読んでいってバックスラッシュでエスケープするような方法の場合、ここにバックスラッシュがあると誤認してしまいます。
3
3
  たとえばソースコードに `"表"` と書いた場合、二番目のダブルクォーテーションマークが「表」の二バイト目の 5C によってエスケープされてしまって、引用符が閉じていないというエラーになります。
4
4
 
5
- これを回避するためには、二バイト目の 5C がバックスラッシュではないと認識するために、コンパイラがシフト JIS に対応しなければいけません。
5
+ これを回避するためには、二バイト目の 5C がバックスラッシュではないと認識するために、コンパイラがシフト JIS に対応しなければいけません。シフト JIS は日本語専用の符号化方式なので、海外では無視されることも多く、海外のソフトを使うときには "表\" のように文字によってエスケープを入れたり、あるいはそのソフトを使うのをあきらめたりしなければいけませんでした。
6
6
 
7
7
  Unicode の符号化文字集合にも同じ問題が起こりえます。今まで特別な意味を持っていたコードが文字の一部として入り込んでくることにより、文字解析のアルゴリズムが煩雑になり、パフォーマンスが落ちたりバグの温床となったりします。
8
8