ここに示すメソッドに基づいて作成した JavaScript ソリューションを次に示します。
function getListSeparator() {
var list = ['a', 'b'], str;
if (list.toLocaleString) {
str = list.toLocaleString();
if (str.indexOf(';') > 0 && str.indexOf(',') == -1) {
return ';';
}
}
return ',';
}
キーは、システム リスト セパレータを使用する toLocaleString() メソッドにあります。
JavaScript を使用してリスト セパレーターを取得し、サーバーから検出できる Cookie に設定することができます。
すべての Windows ロケールを調べたところ、デフォルトのリスト区切り文字はほぼ常に「,」または「;」のようです。一部のロケールでは、コントロール パネルのドロップダウン リストに両方のオプションが表示されます。それ以外の場合は、「,」のみを提供します。1 つのロケール Divehi には、これまで見たことのない奇妙な文字がリスト セパレーターとして使用されています。また、どのロケールでも、ユーザーは任意の文字列をリスト セパレーターとして入力できます。
CSV ファイルの区切り文字としてランダムな文字列を配置するのは面倒に思えるので、上記の関数は「;」のいずれかのみを返します。または「.」、および「;」のみを返します Array.toLocaleString 文字列に「,」が見つからない場合。array.toLocaleString の形式がブラウザー間で保証されているかどうかについては完全にはわかりません。したがって、 indexOf は特定のインデックスで文字を選択するのではなくチェックします。
Array.toLocaleString を使用してリスト セパレーターを取得すると、IE6、IE7、および IE8 で機能しますが、残念ながら、Firefox、Safari、Opera、および Chrome (または少なくとも私のコンピューター上のこれらのブラウザーのバージョン) では機能しないようです。 Windowsの「リスト区切り」の設定に関係なく、それらはすべて配列項目をコンマで区切っているようです。
また、デフォルトでは、CSV ファイルから数値を解析する際に、Excel がシステムの「小数点記号」を使用しているように見えることにも注意してください。ユク。そのため、リスト区切り記号をローカライズする場合は、小数点記号もローカライズする必要があります。