diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py
index 88749a73d2bfba683979cbb1e9daa3091d883c72..55ea15cda96c6fda7796a928b21fa5d1d0c2c481 100644
--- a/pyopencl/__init__.py
+++ b/pyopencl/__init__.py
@@ -115,9 +115,9 @@ class Program(object):
             if isinstance(source, unicode) and sys.version_info < (3,):
                 from warnings import warn
                 warn("Received OpenCL source code in Unicode, "
-                        "should be ASCII string. Attempting conversion.",
-                        stacklevel=2)
-                source = str(source)
+                     "should be ASCII string. Attempting conversion.",
+                     stacklevel=2)
+                source = source.encode()
 
             self._context = context
             self._source = source