如何使用javascript创建一个包含每个ISO / IEC 8859-1字符的字符串?

时间:2014-07-24 21:26:39

标签: javascript kendo-ui telerik qr-code typed-arrays

我想创建一个由每个可能的角色组成的字符串,看看是否有任何流行的QR阅读器能够从this QR Barcode读取每个字符。

我的问题是我根本不知道如何将对象创建为一个字节,以便它显示为IEC 8859字符。我尝试过Typed Arrays,但无法打印出每个字符并将其分配给Telerik / Kendo控件

  

如何使用JS创建一串ISO / IEC 8859-1字符,并将其分配给上面链接的控件?

1 个答案:

答案 0 :(得分:2)

我写了这个函数,它接受一个JavaScript编号并确定它是否在ISO / IEC 8859-1代码空间中。使用String.fromCharCode允许您构建您正在寻找的字符串。

function inIsoIec8859_1(code) {
  if (typeof code !== "number" || code % 1 !== 0) {
    throw Error("code supplied is not a integer type.")
  }

  if (code > 255 || code < 32 || (code > 126 && code < 160)) {
    return false;
  }
  return true; 
}

var isoLatinCodespace = "";

var code = 0;
for (; code < 255; code += 1) {
  if (inIsoIec8859_1(code)) {
    var current = String.fromCharCode(code);
    isoLatinCodespace = isoLatinCodespace + current;
  }
}

http://dojo.telerik.com/IGoT/12

因为你接受了我的原始答案,所以它高于这条线,未经编辑。我发布后意识到一些可能很重要的事情。

如果您打算在循环中获取此值,这将更好地满足您的需求。

var MyApp = { 
  isoLatinString : (function() {
    var isoLatinCodespace = "";

    return function () {
      if (!isoLatinCodespace) {
        function inIsoIec8859_1(code) {
          if (typeof code !== "number" || code % 1 !== 0) {
            throw Error("code supplied is not a integer type.")
          }

          if (code > 255 || code < 32 || (code > 126 && code < 160)) {
            return false;
          }
          return true;
        }

        var code = 0;
        for (; code < 255; code += 1) {
          if (inIsoIec8859_1(code)) {
            var current = String.fromCharCode(code);
            isoLatinCodespace = isoLatinCodespace + current;
          }
        }
      }
      return isoLatinCodespace; 
    }
  }())
}

然后使用MyApp.isoLatinString()。这个新代码只生成一次字符串,即使多次调用也是如此。 MyApp可以是您用来包含应用程序的任何对象。