Warning: fopen(/UnknownUserAgents.log) [function.fopen]: failed to open stream: Permission denied in /home/jpalonus/public_html/charactertable/utilities.inc on line 198
COULD NOT OPEN LOG FILE

Character codes

Home

 

Display characters in this font:

Click on a character below, or doubleclick it to copy its entity name to the clipboard. Click on a character below:

Basic letters & digits
65,A66,B67,C68,D69,E70,F71,G72,H73,I74,J75,K76,L77,M78,N79,O80,P81,Q82,R83,S84,T85,U86,V87,W88,X89,Y90,Z
97,a98,b99,c100,d101,e102,f103,g104,h105,i106,j107,k108,l109,m110,n111,o112,p113,q114,r115,s116,t117,u118,v119,w120,x121,y122,z
48,049,150,251,352,453,554,655,756,857,932, 160,nbsp

Euro letters
192,Agrave200,Egrave204,Igrave210,Ograve217,Ugrave 193,Aacute201,Eacute205,Iacute211,Oacute218,Uacute221,Yacute 194,Acirc202,Ecirc206,Icirc212,Ocirc219,Ucirc 196,Auml203,Euml207,Iuml214,Ouml220,Uuml376,Yuml
224,agrave232,egrave236,igrave242,ograve249,ugrave 225,aacute233,eacute237,iacute243,oacute250,uacute,yacute 226,acirc234,ecirc238,icirc244,ocirc251,ucirc 228,auml235,euml239,iuml246,ouml252,uuml255,yuml
195,Atilde209,Ntilde213,Otilde 197,Aring198,AElig199,Ccedil208,ETH216,Oslash338,OElig352,Scaron142,#142222,THORN
227,atilde241,ntilde245,otilde 229,aring230,aelig231,ccedil240,eth248,oslash339,oelig353,scaron158,#158254,thorn223,szlig

Greek letters
913,Alpha914,Beta915,Gamma916,Delta917,Epsilon918,Zeta919,Eta920,Theta921,Iota922,Kappa923,Lambda924,Mu925,Nu926,Xi927,Omicron928,Pi929,Rho931,Sigma932,Tau933,Upsilon934,Phi935,Chi936,Psi937,Omega
945,alpha946,beta947,gamma948,delta949,epsilon950,zeta951,eta952,theta953,iota954,kappa955,lambda956,mu957,nu958,xi959,omicron960,pi961,rho962,sigma963,tau964,upsilon965,phi966,chi967,psi968,omega

Special characters
64,@35,#38,amp44,,46,.58,:59,; 40,(41,)43,+45,-42,*47,/60,lt61,=62,gt
188,frac14189,frac12190,frac348260,frasl185,sup1178,sup2179,sup3170,ordf186,ordm 37,%8240,permil 36,$162,cent163,pound164,curren165,yen8364,euro
8226,bull183,middot176,deg402,fnof 8224,dagger8225,Dagger182,para166,brvbar167,sect 8482,trade174,reg169,copy
732,tilde168,uml710,circ180,acute184,cedil173,shy175,macr8211,ndash8212,mdash8254,oline8230,hellip
39,apos34,quot8220,ldquo8221,rdquo8222,bdquo8216,lsquo8217,rsquo8218,sbquo171,laquo187,raquo8249,lsaquo8250,rsaquo191,iquest63,?161,iexcl33,!

Math characters
8764,sim8773,cong8776,asymp8800,ne8805,ge8722,minus177,plusmn 215,times247,divide8730,radic8747,int8706,part8733,prop8734,infin
8855,otimes8901,sdot8709,empty8712,isin8715,ni8713,notin8834,sub8835,sup8836,nsub8838,sube8835,supe8743,and8744,or8745,cap8746,cup
8968,lceil8969,rceil8970,lfloor8971,rfloor9001,lang9002,rang8736,ang8869,perp172,not8756,there48704,forall8707,exist8711,nabla8727,lowast8853,oplus
8719,prod8721,sum8465,image8472,weierp8476,real8501,alefsym181,micro982,piv978,upsih977,thetasym

 

<-- Choose a character from the left or below
The character you selected:
 
Click on the entity name or number above to copy it to the clipboard. Select the entity name or number above so you can copy it to the clipboard.
My recent characters:
People who chose  also chose:
Most popular characters:
Most recent characters:

(Jan '08) This is a basic character table which shows you the 8-bit ASCII characters, plus all the other little-known characters that have HTML entity names (305 characters in all). But it also has a twist: When you copy a character to the clipboard, your choice is recorded on the server in your personal history list; plus it tallies statistics on the most popular characters overall, recent characters overall, and—if a character's been chosen before—"people who chose X also chose Y".

Limitations
In Firefox, we run up against a Mozilla security feature. It doesn't let you programmatically copy text to the clipboard - so when running under Firefox we don't show the user a button to copy it; the best we can do is to show them the entity name and explain how to copy it over manually. This also means we cannot gather statistical information from Firefox users when they use a character. (We could gather statistics when they click on a character to see its entity name, but I figure people are likely to click on a lot of characters they really have no use for. It's only meaningful when they go to use a character.)

About this Firefox security feature: Firefox doesn't allow a script to copy text to or from the clipboard. Now, I can understand why reading the clipboard's contents should be forbidden. That would be a huge security hole - who knows what the user has put there recently? But Firefox goes one further: They don't let a script put anything into the clibpoard either! This makes no sense to me. Where's the risk there?

"People who chose this character also chose..."
Perhaps this feature should be called "click similarities". Or not.

I have no idea what the best-practice algorithm is for implementing this feature, so I came up with a quick & dirty method. When a user copies a character to the clipboard, I search their history for the last 10 characters they copied before (that are different than this new one). For each previous character, I increment a hit counter in two records in a "chars_x_chars" table: One that says the current character is related to the previous character, and the other says that the previous char is related to the new char. (NOTE: I later realized this is redundant. The Unicode character table only writes out one record for the relationship.) Think of a 305x305 matrix - the rows represent each possible "this" char, the columns each possible "previous" char. For this project, this means a 93,025 element matrix.

Theoretically this algorithm uses memory at a rate of O(n2). But since we're storing this information in a database, we only save the character combinations that have occurred at least once - making it effectively a sparse array. So if most of the possible combinations of characters never get chosen by people, its impact on the table size should depend more on the total number of choices made instead of the universe of all possible character combinations. But as more people use the character table, more & more combinations will end up occurring at least once, and if the page becomes popular the total size of the chars_x_chars table would indeed approach 93,025. This approach is fine for small datasets, but would it also work with large datasets - like an online catalog, or even my Unicode character table? (55,633 x 55,633 Unicode chars ≈ 3 billion records in the table. An online catalog of 100,000 SKUs = 10 billion records. Whee!)

There is one possible saving grace with this algorithm: With a huge dataset (of characters, SKUs, etc.), it's much less likely that all the possible combinations will actually get chosen by people. Perhaps the larger the dataset, the less likely you're going to hit the wall at O(n2) performance in the first place. I'm not a mathematician, so I'll have to wait for the site to get widely used and see how real-world performance gets impacted.

The Combobox
I created the combobox class to let the user pick a font from a dropdown listbox, but also to be able to enter in any other font name they wanted to see as well. This has proven to be a very useful standard control in the world of Windows apps. I assume Mac users have something similar. Every web developer should have one in their toolbox.

AJAX
This was my first AJAX project. I wrote a simple BasicAJAX class to handle the conversation w/the server. (There are lots of good AJAX libraries out there by now, and I'm sure it would make more sense to just use a mature AJAX library in a more critical environment than this site. But I did give this class a nice, simple API, and it works well.)