Here is a snippet out of Google’s “how to” section on this subject. It is not all inclusive, but gives some basic guidelines. As a good rule of thumb, if you have a question about whether or not the search engines will see a particular character, just Google it in conjunction with a word or phrase. If it appears in the search results, then the search engine is recognizing it. If not, then it isn’t.
Some basic facts
Every word matters. Generally, all the words you put in the query will be used.
Search is always case insensitive. A search for [ new york times ] is the same as a search for [ New York Times ].
Generally, punctuation is ignored, including @#$%^&*()=+\ and other special characters.
To make sure that your Google searches return the most relevant results, there are some exceptions to the rules above.
Exceptions to ‘Every word matters’
Words that are commonly used, like ‘the,’ ‘a,’ and ‘for,’ are usually ignored (these are called stop words). But there are even exceptions to this exception. The search [ the who ] likely refers to the band; the query [ who ] probably refers to the World Health Organization — Google will not ignore the word ‘the’ in the first query.
Synonyms might replace some words in your original query.
A particular word might not appear on a page in your results if there is sufficient other evidence that the page is relevant. The evidence might come from language analysis that Google has done or many other sources. For example, the query [ overhead view of the bellagio pool ] will give you nice overhead pictures from pages that do not include the word ‘overhead.’
Punctuation that is not ignored
Punctuation in popular terms that have particular meanings, like [ C++ ] or [ C# ] (both are names of programming languages), are not ignored.
The dollar sign ($) is used to indicate prices. [ nikon 400 ] and [ nikon $400 ] will give different results.
The hyphen – is sometimes used as a signal that the two words around it are very strongly connected. (Unless there is no space after the – and a space before it, in which case it is a negative sign.)
The underscore symbol _ is not ignored when it connects two words, e.g. [ quick_sort ].