修复urldecode异常
This commit is contained in:
parent
58e36e8c17
commit
e3e47542fe
@ -97,7 +97,7 @@ module.exports = {
|
||||
/*
|
||||
** You can extend webpack config here
|
||||
*/
|
||||
extend (config, ctx) {
|
||||
extend(config, ctx) {
|
||||
// Run ESLint on save
|
||||
if (ctx.isDev && ctx.isClient) {
|
||||
config.module.rules.push({
|
||||
|
@ -137,16 +137,58 @@ export default {
|
||||
methods: {
|
||||
decodeTitle(name) {
|
||||
try {
|
||||
// return decodeURIComponent(name.replace(/[%]/g, function (m) {
|
||||
// return '%' + m.charCodeAt(0).toString(16)
|
||||
// // Basically changes "%" to "%25".
|
||||
// }))
|
||||
return decodeURI(escape(name))
|
||||
return this.urldecode(name)
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
return name
|
||||
}
|
||||
},
|
||||
urldecode(encodedString) {
|
||||
let output = encodedString
|
||||
let binVal, thisString
|
||||
const myregexp = /(%[^%]{2})/
|
||||
function utf8to16(str) {
|
||||
let c
|
||||
let char2, char3
|
||||
|
||||
let out = ''
|
||||
const len = str.length
|
||||
let i = 0
|
||||
while (i < len) {
|
||||
c = str.charCodeAt(i++)
|
||||
switch (c >> 4) {
|
||||
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
|
||||
out += str.charAt(i - 1)
|
||||
break
|
||||
case 12: case 13:
|
||||
char2 = str.charCodeAt(i++)
|
||||
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F))
|
||||
break
|
||||
case 14:
|
||||
char2 = str.charCodeAt(i++)
|
||||
char3 = str.charCodeAt(i++)
|
||||
out += String.fromCharCode(((c & 0x0F) << 12) |
|
||||
((char2 & 0x3F) << 6) |
|
||||
((char3 & 0x3F) << 0))
|
||||
break
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
let match = null
|
||||
while ((match = myregexp.exec(output)) != null &&
|
||||
match.length > 1 &&
|
||||
match[1] !== '') {
|
||||
binVal = parseInt(match[1].substr(1), 16)
|
||||
thisString = String.fromCharCode(binVal)
|
||||
output = output.replace(match[1], thisString)
|
||||
}
|
||||
|
||||
output = output.replace(/\\+/g, ' ')
|
||||
output = utf8to16(output)
|
||||
return output
|
||||
},
|
||||
articelRightTocClick() {
|
||||
const windowWidth = window.innerWidth || document.documentElement.clientWidth
|
||||
if (windowWidth < 768) {
|
||||
|
Loading…
Reference in New Issue
Block a user