<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AUnicode_convert</id>
	<title>Module:Unicode convert - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AUnicode_convert"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Unicode_convert&amp;action=history"/>
	<updated>2026-06-18T05:44:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:Unicode_convert&amp;diff=479855&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Unicode_convert&amp;diff=479855&amp;oldid=prev"/>
		<updated>2021-07-16T07:44:42Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- NOTE: all these functions use frame solely for its args member.&lt;br /&gt;
-- Modules using them may therefore call them with a fake frame table&lt;br /&gt;
-- containing only args.&lt;br /&gt;
&lt;br /&gt;
p.getUTF8 = function (frame)&lt;br /&gt;
	local ch = mw.ustring.char(tonumber(frame.args[1] or '0', 16) or 0)&lt;br /&gt;
	local bytes = {mw.ustring.byte(ch, 1, -1)}&lt;br /&gt;
	local format = ({&lt;br /&gt;
		['10'] = '%d',&lt;br /&gt;
		dec = '%d'&lt;br /&gt;
	})[frame.args['base']] or '%02X'&lt;br /&gt;
	for i = 1, #bytes do&lt;br /&gt;
		bytes[i] = format:format(bytes[i])&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(bytes, ' ')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.getUTF16 = function (frame)&lt;br /&gt;
	local codepoint = tonumber(frame.args[1] or '0', 16) or 0&lt;br /&gt;
	local format = ({ -- TODO reduce the number of options.&lt;br /&gt;
		['10'] = '%d',&lt;br /&gt;
		dec = '%d'&lt;br /&gt;
	})[frame.args['base']] or '%04X'&lt;br /&gt;
	if codepoint &amp;lt;= 0xFFFF then -- NB this also returns lone surrogate characters&lt;br /&gt;
		return format:format(codepoint)&lt;br /&gt;
	elseif codepoint &amp;gt; 0x10FFFF then -- There are no codepoints above this&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
	codepoint = codepoint - 0x10000&lt;br /&gt;
	bit32 = require('bit32')&lt;br /&gt;
	return (format .. ' ' .. format):format(&lt;br /&gt;
		bit32.rshift(codepoint, 10) + 0xD800,&lt;br /&gt;
		bit32.band(codepoint, 0x3FF) + 0xDC00)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.fromUTF8 = function(frame)&lt;br /&gt;
	local basein = frame.args['basein'] == 'dec' and 10 or 16&lt;br /&gt;
	local format = frame.args['base'] == 'dec' and '%d ' or '%02X '&lt;br /&gt;
	local bytes = {}&lt;br /&gt;
	for byte in mw.text.gsplit(frame.args[1], '%s') do&lt;br /&gt;
		table.insert(bytes, tonumber(byte, basein))&lt;br /&gt;
	end&lt;br /&gt;
	local chars = {mw.ustring.codepoint(string.char(unpack(bytes)), 1, -1)}&lt;br /&gt;
	return format:rep(#chars):sub(1, -2):format(unpack(chars))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>