UIがWebでUnicodeな文字が入力できるのにデータ出力がCSVなんでCP932以外を弾くスクリプトを書いてみた

ありがたいことに

てなサイトがあったので、そこの表を忠実にチェックデータに落としました。力技です。

function isValidInCP932(value) {
  var length = value.length;
  for (var i = 0; i < length; i++) {
    var c = value.charAt(i);
    if (isValidInCP932.Table.indexOf(c, 0) == -1) {
      return c;
    }
  }
  return "";
}
isValidInCP932.Table =
  " !\"#$%&'()*+,-./" +
  "0123456789:;<=>?" +
  "@ABCDEFGHIJKLMNO" +
  "PQRSTUVWXYZ[\\]^_" +
  "`abcdefghijklmno" +
  "pqrstuvwxyz{|}~ " +
  "。「」、・ヲァィゥェォャュョッ" +
  "ーアイウエオカキクケコサシスセソ" +
  "タチツテトナニヌネノハヒフヘホマ" +
  "ミムメモヤユヨラリルレロワン゙゚" +
  " 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\〜‖|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+−±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇" +
  "◆□■△▲▽▼※〒→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬ʼn♯♭♪†‡¶◯" +
  "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" +
  "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん" +
  "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ" +
  "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω" +
  "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя" +
  "─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂" + /* 以下、延々とCP932な文字列が続く */ + "";

はてダに貼ると文字化けしちゃうから、あとでgithubにあげておきます。

あげました(2012.07.18追記)

結論


sjisな*.csvしか読めないExcel氏ね!