如何在 JavaScript 中进行 Base64 编码
我正在尝试在网站上实现一个简单的脚本,该脚本将从 google 的 ajax API 返回 base64 编码信息。这就是我到目前为止正在尝试的:
<html>
<head>
<script src="http://www.google.com/jsapi?key=ABQIAAAA0duujonFsEX871htGWZBHRS76H0qhS7Lb-D1Gd0Mnaiuid8Z7BQIyz2kMpojKizoyiCQA4yRkKAKug" type="text/javascript"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
var location = 'Unable to determine your location.';
if (google.loader.ClientLocation) {
var loc = google.loader.ClientLocation;
location = 'Country: <strong>' + loc.address.country + '</strong>, Region: <strong>' + loc.address.region + '</strong>, City: <strong>' +
loc.address.city + '</strong>, Lat/Long: <strong>' + loc.latitude + ', ' + loc.longitude + '</strong>';
}
jQuery('.geolocation').html(location);
});
</script>
</head>
<body>
<span class="geolocation"></span>
</body>
</html>
它返回我试图正确获取的信息,但我需要对国家、地区、城市、纬度和经度等单独的部分进行 Base64 编码。在 php 中这很简单,但我不知道如何在 javascript 中做到这一点。任何帮助将不胜感激。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Mozilla、WebKit 和 Opera 都有
btoa()
和用于 Base 64 编码的atob()
函数分别解码。尽可能使用它们,因为它们几乎肯定会比 JavaScript 实现快得多,并且会回退到您执行 网络搜索。2013 年 9 月 10 日编辑:
atob()
和btoa()
不处理 ASCII 范围之外的 Unicode 字符。 MDN 有解决方法,但我不能我不能为他们担保。感谢@larspars 指出了这一点。例如,如果您使用的是 amphetamachine 答案中的示例,您可以执行以下操作:
Mozilla, WebKit and Opera all have
btoa()
andatob()
functions for base 64 encoding and decoding respectively. Use those where possible because they will almost certainly be massively faster than a JavaScript implementation and fall back to one of the many scripts that turn up when you do a web search.EDIT 10 SEPTEMBER 2013:
atob()
andbtoa()
do not handle Unicode characters outside the ASCII range. MDN has workarounds but I can't vouch for them. Thanks to @larspars for pointing this out.For example, if you were using the example from amphetamachine's answer, you could do the following:
这个答案似乎与您的内容相符寻找。
还有 这个 更优雅:
This answer seems to match what you're looking for.
There's also this one which is more elegant:
IE 10 和以上和所有最新的浏览器
编码字符串
解码字符串
否则您可能在页面上有您自己的函数。 带有参考文献的小博客
IE 10 & above and all latest browser
Encode String
Decode String
Or else you might have your own function on page. small blog with references
我有部分答案中的代码:
https://scotch.io/quick-tips/how-to-encode-and-decode-strings-with-base64-in-javascript
以及本页答案的另一部分:
https://stackoverflow.com/a/3776796/2655623
这是结果:
因为这将所有内容都放在一个地方,我不会涉及 window.atb / window.btoa 在不同浏览器中的不同行为。
I have part of the code from the answer here:
https://scotch.io/quick-tips/how-to-encode-and-decode-strings-with-base64-in-javascript
and the other part from the answer on this page:
https://stackoverflow.com/a/3776796/2655623
and here is the result:
As this keep everything in one place, I won't involve myself with how window.atb / window.btoa act different in various browsers.