修复urldecode异常
This commit is contained in:
parent
58e36e8c17
commit
e3e47542fe
@ -137,16 +137,58 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
decodeTitle(name) {
|
decodeTitle(name) {
|
||||||
try {
|
try {
|
||||||
// return decodeURIComponent(name.replace(/[%]/g, function (m) {
|
return this.urldecode(name)
|
||||||
// return '%' + m.charCodeAt(0).toString(16)
|
|
||||||
// // Basically changes "%" to "%25".
|
|
||||||
// }))
|
|
||||||
return decodeURI(escape(name))
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
return name
|
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() {
|
articelRightTocClick() {
|
||||||
const windowWidth = window.innerWidth || document.documentElement.clientWidth
|
const windowWidth = window.innerWidth || document.documentElement.clientWidth
|
||||||
if (windowWidth < 768) {
|
if (windowWidth < 768) {
|
||||||
|
Loading…
Reference in New Issue
Block a user